PHP - Bcrypt哈希比较总是失败

3
<?php

require 'password.php';
$hash1 = password_hash('testpassword',PASSWORD_BCRYPT,array('cost' => 11));
$hash2 = password_hash('testpassword',PASSWORD_BCRYPT,array('cost' => 11));

if(password_verify($hash1,$hash2)) echo 'Pass';
else echo 'Fail';

?>

我试图在PHP 5.4.16中使用password_compat库提供的bcrypt,但是这个脚本总是输出“Fail”,即使它正在比较相同密码的两个哈希值,为什么?
注:仅供澄清,我意识到哈希值不完全相同,否则我就可以直接比较它们而不需要使用函数了。

这就是哈希的目的。没有两个一样的。我发现使用Blowfish也更容易。 - James
1个回答

12
你需要将密码和哈希值传递给password_verify()函数:
password_verify('testpassword', $hash1)

注意: testpassword 是没有哈希的密码

参考资料:

PS: password_hash 生成的结果是不同的,因为它包含了一个随机的盐


啊,真不敢相信我竟然忽略了那个,我看到他们在示例中使用了一个变量,就以为它是另一个哈希表。非常感谢,等一下让我能够接受答案时,我会立即接受的。 - Cains
1
这就是为什么我使用特定的PHP IDE - 它会向我建议带有参数的函数,例如:"password_verify(password: string, hash: string) bool" - Vladimir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接