我应该如何检查散列密码

问题描述

我使用 crypt ( password,$2y$10$predefinedsalt ) 来生成散列.. 可以使用正常的 if 与其他散列一起检查它们吗?

$password = crypt ( password,$2y$10$predefinedsalt);
$password2 -> from database)
if(password == password2)
{
     then do something
}

解决方法

是的,这就是密码验证的工作原理。

您存储散列的原始密码,并在登录时使用相同的选项/散列对输入的密码进行散列,并将其与您之前存储的密码进行比较

PHP 建议使用 hash_equals() 来缓解计时攻击。像这样:

return hash_equals($hash,crypt($password,$salt));