在每个密码 yii 中加盐

salt in every password yii

我有一个名为 salt 的 table 列,它是必填字段,但我不希望用户输入他们自己的盐 我们的系统有没有办法为每个通过 sha1 加密的密码生成盐?

您可以为每个条目使用一个随机值作为盐。只要它看起来是随机的,值是多少并不重要。

检查此 link: https://crackstation.net/hashing-security.htm

在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)));
}

您正在使用 Yii,所以让我们使用 YII 风格

我用

Yii::app()->securityManager->generateRandomString($length,true)

要了解它,请单击 here

Yii 框架提供了一个 class CPasswordHelper,它生成安全的 BCrypt 散列,每个密码包含一个盐。有了这个 class 你就可以不用单独的盐场了。 Yii 文档中的示例:

$hash = CPasswordHelper::hashPassword($password);

if (CPasswordHelper::verifyPassword($password, $hash))
    // password is good
else
    // password is bad