需要从数据库中获取哈希值? password_hash bcrypt

时间:2017-06-20 20:44:18

标签: php mysql hash bcrypt

我使用PHP的password_hash和bcrypt算法来哈希我的密码。它们在MySQL数据库中。

password_hash($password, PASSWORD_BCRYPT);

很明显,这个函数生成的每个哈希都是不同的。但是真的有必要通过电子邮件/登录识别用户或从数据库中获取哈希值然后用PHP password_verify()进行验证吗?

是否真的有必要进行此查询,然后检查?

我的意思是,是否可以在之前检查哈希,之后只进行查询以检查它是否与MySQL中的匹配?

还是别的什么?我记得多年前我使用过像查询内部查询一样的内容,比如

WHERE login = $login and pass = PASSWORD($password)

特别是我的意思是PASSWORD($password)

除了从数据库中获取用户的哈希值之外,还有其他选项,然后使用password_verify()验证此哈希值吗?

1 个答案:

答案 0 :(得分:2)

是的,这是必要的。您需要在散列期间生成的唯一salt(编码为散列的一部分)进行比较。这也正是为什么这个算法对密码存储如此强大的原因。