多次散列密码

Hashing a password more than once

如果我对密码进行两次哈希处理:

$psw1= password_hash($password,PASSWORD_DEFAULT);
$psw2=password_hash($psw1,PASSWORD_DEFAULT);

这样更安全还是没用?

P.S.: 我是 php

的新手

这将阻止您验证密码,因为您将无法重现第一个散列,因为您已经丢弃了第一个散列的随机盐。相反,要提高单个哈希的安全性,只需调整其成本因子:

password_hash($password, PASSWORD_DEFAULT, ['cost' => 12])

成本越高,散列的轮次就越多。选择一个不会使过程减慢太多但也不会太低的成本。事实上,随着时间的推移,随着更好的服务器硬件变得可用,您应该不断增加成本因素​​,并随着时间的推移使用更强大的算法重新散列您的用户密码。这就是 password_needs_rehash 的具体用途。

我认为这是无用的,因为一旦散列就不可能知道真正的价值是什么......至少从理论上讲是这样。

我建议使用强大的哈希函数,如 sha512 或 ripemd320,因为存储哈希密码的公开可用数据库不多。

如果您想了解更多信息,我在 Whosebug 上发现了一个有很好答案的老问题:PHP dehashing the password