【发布时间】:2017-08-20 14:21:40
【问题描述】:
例如,如果我对密码进行 20 次哈希运算,需要付出代价:
$Pass1=password_hash($Pass, PASSWORD_DEFAULT, ['cost' => 20])
然后我将它存储在我的数据库中,我如何让用户登录我的网站,如果我知道的password_verify() 对密码“一次”进行哈希处理?
我需要password_verify ($password,$storedPassword) 20 次吗?
或者有更简单的方法吗?我看到了一个 password_needs_rehash,我已经尝试过使用它,但它不起作用。
【问题讨论】:
-
多次散列密码不会提高安全性。检查文本是否是先前保存的密码的常规方法是遵循与原始密码相同的转换过程(即在这种情况下对传入的文本进行 20 次散列并与先前保存的散列进行比较)。
-
您使用成本因子 20 对密码进行哈希处理,成本因子实际上存储在哈希本身中,因此 password_verify 可以同时查看哈希算法和成本因子,并使用它们来验证提供的密码.只需像在 OP 中一样使用它,它会处理其余的事情。
标签: php password-hash