【发布时间】:2012-01-02 14:20:54
【问题描述】:
我正在尝试找到一种散列算法,用于将我的密码保存在数据库中(以及盐)。我在 SO 上找到了这个:How do you use bcrypt for hashing passwords in PHP?。最佳答案有一个似乎可以工作的库。我只是对verify 方法有点困惑。
要运行脚本,库的作者提供:
$bcrypt = new Bcrypt(15);
$hash = $bcrypt->hash('password');
$isGood = $bcrypt->verify('password', $hash);
hash 方法获取输入字符串并使用 mcrypt + salt 对其进行哈希处理。结果返回到 $hash。然后verify 方法采用与hash 方法+ $hash 相同的输入。 verify 然后调用 mcrypt + $hash 的值(而不是一些随机盐)——不知何故,结果是相同的 $hash???
简化:
hash = password + salt
verify = password + hash
verify = hash <-- huh???
我错过了什么?
另外:
我计划修改代码,使hash 方法接受 $salt 参数。我会将getSalt 设为公共方法。这样,我可以得到一个盐,将其存储在数据库中,将哈希存储在数据库中,并使用用户的输入+盐来查看它是否与我存储在数据库中的内容进行了哈希处理。 这个想法有什么问题吗?
【问题讨论】:
标签: php algorithm security mcrypt