阅读这个关于密码散列的优秀答案并想知道如何实现它:
邪恶的跳蚤写道:
为每个用户生成一个随机数;仅此一项就击败了彩虹桌。这是一个随机数,根据范围,它会扩展产生的哈希值的数量。
那么除了用户密码之外,在我的数据库中存储一个唯一的令牌吗?
原帖中的示例代码:
function hash_password($password, $nonce) {
global $site_key;
return hash_hmac('sha512', $password . $nonce, $site_key);
}
如何使用此代码验证密码?让我解释:
当用户提交他的密码时,我需要生成它的哈希来检查电子邮件地址和哈希密码匹配的现有数据库行。当我对用户一无所知时,如何选择这一行$nonce
?我错过了什么吗?也许我只需要通过他的电子邮件地址选择用户,然后稍后验证密码哈希?
顺便说一句,你推荐这种散列方法吗?