问题描述
我使用 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));