Password_hash 为相同的输入生成不同的哈希值
在登录系统中,为了安全起见,对密码进行哈希处理是很常见的。但是,某些用户可能会遇到这样的问题:password_hash 对于同一密码每次都会生成不同的哈希值。这可能会阻止使用password_verify()成功验证。
了解Password_hash的行为
Password_hash旨在为每个哈希操作生成唯一的盐。这种盐在散列之前附加到密码中,使得几乎不可能预测散列值。即使是相同的密码,由于随机盐的原因,每次也会产生不同的哈希值。
解决验证问题
要验证密码,您需要提供原始密码未散列的密码作为password_verify() 的第一个参数。第二个参数应该是存储在数据库中的哈希密码。
验证示例代码
$password4 = 'PlaintextPassword'; $dbpassword = 'HashedPasswordFromDatabase'; if (password_verify($password4, $dbpassword)) { // Password verified } else { // Password does not match }
其他安全措施
如果需要,您可以通过增加成本系数来提高password_hash的安全性。默认成本为 10,但您可以设置更高的值(例如 15)以增加保护。
$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);
以上是为什么Password_hash为相同的输入生成不同的哈希值?的详细内容。更多信息请关注PHP中文网其他相关文章!