相关疑难解决方法(0)

使用PHP加密和解密密码的最佳方法?

可能重复:
PHP双向加密:我需要存储可以检索的密码

我计划在我的网站上为我的用户存储外国帐户信息,也就是用户名和密码等等...我想保证信息的安全,但我知道如果我散列他们的信息,我无法检索它以供以后使用.

Base64是可解密的,所以没有必要使用它只是简单的关闭.我的想法是加扰用户并在它解密之前和之后通过这种方式传递,如果你尝试解密,你会得到一些看起来很有趣的文本.是否有一个php函数接受将进行字符串的唯一加扰的值,并在以后重新计算该值时对其进行解扰?

有什么建议?

php encryption scramble mcrypt

216
推荐指数
4
解决办法
27万
查看次数

什么加密算法最适合加密cookie?

由于这个问题相当受欢迎,我认为给它更新很有用.

让我强调AviD给出的正确答案:

您不应该在cookie中存储任何需要加密的数据.相反,在cookie中存储一个大小合适的(128位/ 16字节)随机密钥,并将您想要保密的信息存储在服务器上,由cookie的密钥标识.



我正在寻找有关加密cookie的"最佳"加密算法的信息.

我有以下要求:

  • 必须快速
    加密和解密数据(几乎)每个请求都要完成

  • 它将在小数据集上运行,通常是大约100个字符或更少的字符串

  • 它必须是安全的,但它不像我们正在保证银行交易

  • 我们需要能够解密信息,以便SHA1等出来.

现在我已经读过Blowfish快速而安全,我读过AES快速而安全.Blowfish的块大小较小.

我认为这两种算法都提供了足够的安全性?所以速度将成为决定性因素.但我真的不知道这些算法是否适合小字符串,以及是否有更适合加密cookie的算法.

所以我的问题是:
什么加密算法最适合加密cookie数据?

更新
更准确地说,我们要加密2个cookie:一个包含会话信息,另一个包含"记住我"信息.

该平台是PHP上作为VPS上的Linux上的apache模块.

更新2
我同意cletus,将任何信息存储在cookie中是不安全的.

但是,我们需要实现"记住我"功能.可接受的方法是设置cookie.如果客户端提供此cookie,则允许他或她以(几乎)相同的权限访问系统,就像他/她提供有效的用户名密码组合一样.

因此,我们至少要加密cookie中的所有数据,以便:
a)恶意用户无法读取其内容;
b)恶意用户无法制作自己的cookie或篡改它.

(在我们对它做任何事情之前,对所有来自cookie的数据进行消毒并检查其有效性,但这是另一个故事)

会话cookie不再包含sessionId/timestamp.它可以在没有加密的情况下使用,但我认为加密它没什么害处?(计算时间除外).

因此,鉴于我们必须在cookie中存储一些数据,加密它的最佳方法是什么?

更新3
对此问题的回答使我重新考虑所选择的方法.我确实可以做同样的事情而不需要加密.我不应该加密数据,而应该只发送没有上下文而无法猜到的数据.

然而,我也不知所措:
我认为加密使我们能够将数据发送到BigBadWorld™,并且仍然(相当)确定没有人可以阅读或篡改它......
不是全部加密点?

但下面的反应推动:不要相信加密来实现安全性.

我错过了什么?

php security encryption cookies remember-me

48
推荐指数
4
解决办法
4万
查看次数

如何在PHP中加密字符串?

我想创建一个应该有一些密钥的加密函数.类似于以下内容:

function encrypt($string) {
    $key = "mastermind";
    $enc = encryptfunc($string, $key);

    return $enc;
}
Run Code Online (Sandbox Code Playgroud)

同样的事情应该适用于解密.

php encryption

20
推荐指数
3
解决办法
7万
查看次数

用PHP加密

我如何使用密钥加密PHP的东西?我宁愿不要安装Mcrypt.我还需要加密非常强大.

php encryption

5
推荐指数
1
解决办法
606
查看次数

如何允许PHP在不影响服务器安全性的情况下写入文件

每当我想让PHP脚本将输出写入服务器上的文件时,我经常会遇到负面评论.

我用的fopen(),fwrite()fclose()功能.

我知道如何实现这一目标的唯一方法是将输出文件的权限设置为0666,或者让它由"nobody"拥有(这是PHP在我们的Apache Web服务器上运行的用户).

因此,如果"0666"或"无人拥有"是安全风险,那么如何成功安全地允许PHP脚本写入文件?

感谢您就此主题分享指导.

php apache permissions fwrite file-ownership

5
推荐指数
1
解决办法
2056
查看次数

在PHP中确定性地从密码派生32字节密钥

今天我了解到"密码"倾向于表示任意数量字符的可记忆字符串,而"密钥"表示高度随机的字符串(基于所使用的加密算法的特定长度).

所以今天我第一次听说了Key推导函数的概念.

我对如何从任意长度的密码(在PHP中)派生32字节密钥感到困惑.

以下方法有效但忽略 "[盐]应随机生成"的说明(也是如此):

$salt = 'this salt remains constant';
$iterations = 10;
$length = 32;
$aesKey = hash_pbkdf2('sha256', $somePasswordOfArbitraryLength, $salt, $iterations, $length, false);
Run Code Online (Sandbox Code Playgroud)

以下方法也有效,但也不是很正确:

$hash = password_hash($somePasswordOfArbitraryLength, PASSWORD_BCRYPT, ['cost' => $iterations]);
$aesKey = substr($hash, -$length);//this smells weird
Run Code Online (Sandbox Code Playgroud)

通过我的所有搜索,我很惊讶我没有在PHP中找到一种"官方"方式来确定性地从密码中获取32字节密钥.

我该怎么办?

PS我在PHP中使用Laravel并希望使用AES-256-CBC加密,如下所示:

$encrypter = new \Illuminate\Encryption\Encrypter($aesKey, 'AES-256-CBC');
$encryptedText = $encrypter->encrypt($text);
Run Code Online (Sandbox Code Playgroud)

Laravel的加密助手(例如Crypt::encryptString('Hello world.'))似乎不符合我的要求,因为我希望每个用户的数据根据​​每个人的密码单独加密.

无论我使用哪种密钥派生函数,每次都会产生相同的密钥,因为我将使用对称加密来解密用户使用该密钥加密的字符串.

PPS由于问题1,2,和3用于引入某些概念我.

php encryption hash aes laravel

5
推荐指数
1
解决办法
396
查看次数

PHP 中是否有双向哈希算法?

免责声明:我知道散列不应该是可逆的。

我见过很多人问是否有办法“取消散列”已经散列的文本。但是,我没有看到直接的答案。大多数答案都指出 MD5 和 SHA-1 是单向散列算法,因此是不可逆的。这很好,但它引出了一个问题,所有散列算法都是单向且不可逆的吗?

algorithm hash

3
推荐指数
1
解决办法
3354
查看次数

PHP加密和解密字符串对url友好

我试图找出一种加密用户 ID 号的方法。我的想法是将 id(1 到 5 个字符之间)与一些字母(如 _wordtouse )结合起来加密。唯一的两个要求是

  1. 加密版本最多只能包含 15 个字符
  2. 我需要能够解密不同页面上的字符串

所有这一切的原因是当有人输入用户个人资料时,我试图“隐藏”用户 ID 号。所以我试图找到一种方法来通过 url 作为获取参数传递用户 ID 的加密版本。

有没有人知道如何解决这个问题?

php encryption hash

1
推荐指数
1
解决办法
9654
查看次数

使用php的mcrypt,AES-128和AES-512有什么区别?

我对使用php的mcrypt的AES-128和AES-512的区别感到困惑.差异只是密钥的长度(32和64个字符)或差异是使用的算法,如MCRYPT_RIJNDAEL_128?如果差异是后者,那么AES-512的算法应该如何呢?

php encryption cryptography aes mcrypt

0
推荐指数
1
解决办法
1232
查看次数

如何使用php加密和解密mysql数据库中的数据?

当我将这些东西添加到我的mysql数据库时,我想加密我的php文件中的一些数据.

我就是这样做的.

我创建一个静态键,如:

$key = md5("uJHyFVSG");
Run Code Online (Sandbox Code Playgroud)

然后我有两个函数,名为encrypt()和decrypt(),他们这样做:

function encrypt($string, $key){
    $string = rtrim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_ECB)));
    return $string;
}

function decrypt($string, $key){
    $string = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($string), MCRYPT_MODE_ECB));
    return $string;
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是最佳做法,但是我如何生成除md5以外的密钥?

php security encryption cryptography mcrypt

0
推荐指数
1
解决办法
5670
查看次数

在PHP 7中使用salt进行最佳加密/解密

我正在寻找最简单和安全的方法来加密/解密PHP7中特定盐的字符串

my string + specific salt = encryped data 
decode(encryped data) = my string
Run Code Online (Sandbox Code Playgroud)

我看到了这篇文章,但mcrypt_encrypt似乎已被弃用了.你有其他建议或例子吗?谢谢

php encryption

0
推荐指数
1
解决办法
1万
查看次数