我想为每个用户密码使用不同的盐,并且在用户表中有一个名为salt
的列,但是我不怎么用自定义盐创建哈希以及如何验证具有yii2功能的密码。
我搜索了yii2文档,但发现了以下功能:
Yii::$app->getSecurity()->generatePasswordHash($password);
Yii::$app->getSecurity()->validatePassword($password, $hash);
这些函数独立于我的自定义盐,并且具有自己的哈希值。
我需要这样的东西:
$hash = createHash($password, $random_string_as_salt);
$validate = validateHash($password, $hash, $random_string_as_salt);
答案 0 :(得分:1)
generatePasswordHash()
已经在内部创建了带有盐的哈希(每个用户唯一)。您不需要为此单独的列。实际上,您甚至不应该尝试强行使用自己的密码散列-加密很难,并且使它比默认的Yii2实现更好的机会几乎为零。而且您会使情况变得更糟的风险非常高。
只需删除盐栏,然后仅使用一根密码即可-Yii2将以安全的方式处理它。