我使用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()
验证此哈希值吗?
答案 0 :(得分:2)
是的,这是必要的。您需要在散列期间生成的唯一salt(编码为散列的一部分)进行比较。这也正是为什么这个算法对密码存储如此强大的原因。