在保护登录系统中,通常采用密码哈希来保护用户凭据。然而,每次遇到不同的散列值可能会引起关注。
问题:
尝试使用password_hash()对密码进行散列,生成的值有所不同,后续验证通过password_verify() 失败。
说明:
password_hash() 由于出于安全目的使用随机化而每次都会有意返回唯一值。这可确保每个密码对应的哈希值是唯一的,从而使攻击或危害用户帐户变得更加困难。
验证:
要正确验证哈希密码,原始密码未散列的密码和存储的散列($dbpassword)应用作password_verify()的输入。该函数负责将未散列的密码与散列的版本进行比较,验证它们是否匹配。
安全增强:
要进一步增强安全性,请考虑增加散列成本作为参数传递给password_hash()。较高的成本(例如下面示例中的 15)会导致哈希算法的迭代次数增多,从而使其计算量更加密集,并增强对暴力攻击的抵抗力。
<code class="php">$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);</code>
以上是为什么 PHP 中的密码哈希值不同以及如何验证它们?的详细内容。更多信息请关注PHP中文网其他相关文章!