【发布时间】:2015-04-02 04:41:41
【问题描述】:
我有一个名为 salt 的表格列,它是必填字段,但我不想让用户输入自己的 salt 我们的系统有没有办法为每个通过 sha1 加密的密码生成盐?
【问题讨论】:
我有一个名为 salt 的表格列,它是必填字段,但我不想让用户输入自己的 salt 我们的系统有没有办法为每个通过 sha1 加密的密码生成盐?
【问题讨论】:
你正在使用 Yii,所以让我们用 YII 风格
我用
Yii::app()->securityManager->generateRandomString($length,true)
要了解它,请点击here
【讨论】:
Yii 框架提供了一个类CPasswordHelper,它生成安全的 BCrypt 哈希,每个密码都包含一个盐。有了这个类,你可以不用单独的盐字段。 Yii 文档中的一个例子:
$hash = CPasswordHelper::hashPassword($password);
if (CPasswordHelper::verifyPassword($password, $hash))
// password is good
else
// password is bad
【讨论】:
您可以为每个条目使用一个随机值作为盐。只要它看起来是随机的,值是什么并不重要。
【讨论】:
在 PHP 中使用最简单的加密和解密信息
$salt ='whatever_you_want';
function simple_encrypt($text)
{
return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}
function simple_decrypt($text)
{
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}
【讨论】: