【问题标题】:How should i check hashed passwords我应该如何检查散列密码
【发布时间】:2021-05-19 20:29:31
【问题描述】:

我使用 crypt ( password , $2y$10$predefinedsalt) 来生成哈希值。可以使用普通 if 将它们与其他哈希值一起检查吗?

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

【问题讨论】:

  • 你为什么不用password_hash()和password_verify()?那么你已经有一个已知且正确的方法来处理密码散列
  • 带密码的数据库已经存在,我无法更改。所以我必须使用预定义的盐,而 password_hash() 是不可能的

标签: php hash crypt


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 2012-08-18
    • 2015-06-28
    • 1970-01-01
    • 2012-12-19
    • 2017-11-16
    • 2018-03-12
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多