【发布时间】:2013-11-19 11:52:57
【问题描述】:
https://github.com/ircmaxell/password_compat
我正在使用上面的库为我的网站实施 bcrypt。如描述中所述,password_verify() 可用于检查密码是否对应于特定哈希。这是我在用户登录时应该使用的吗?获取他们输入的密码并将其与数据库中的哈希值进行比较?
第二个问题,加盐从何而来?我不需要为每个用户在数据库中存储一个盐吗?
【问题讨论】:
https://github.com/ircmaxell/password_compat
我正在使用上面的库为我的网站实施 bcrypt。如描述中所述,password_verify() 可用于检查密码是否对应于特定哈希。这是我在用户登录时应该使用的吗?获取他们输入的密码并将其与数据库中的哈希值进行比较?
第二个问题,加盐从何而来?我不需要为每个用户在数据库中存储一个盐吗?
【问题讨论】:
是的,password_verify 是您用来根据哈希版本验证明文密码的函数。
加盐已经是过程的一部分,生成的哈希包含随机盐。您无需手动执行此操作。
确实很简单:
$registeredPassword = 'password';
$hashedPassword = password_hash($registeredPassword);
// store $hashedPassword in database...
$enteredPassword = 'password';
if (password_verify($enteredPassword, $hashedPassword)) {
// login successful
}
password_hash 实现负责安全的加盐和散列。请务必阅读手册及其示例和注释:http://php.net/manual/en/function.password-hash.php、http://php.net/manual/en/function.password-verify.php
【讨论】: