哈希密码

时间:2011-04-18 15:42:49

标签: php

  

可能重复:
  password hashing

哈希密码的最佳做法是什么?

我做了以下事情:

$salt = 12345;
$hash = hash("sha256", $_POST['password'] . $salt);

有更好的解决方案并且安全吗?

6 个答案:

答案 0 :(得分:2)

我个人建议使用bcrypt。 主要原因是它很慢。这有助于减缓对哈希的攻击。如果您使用带有密码的密码,如果您的哈希列表落入坏人手中,这将使事情变得更加困难。

这篇文章更详细地解释了它:
http://codahale.com/how-to-safely-store-a-password/

答案 1 :(得分:1)

在我正在寻找的另一个答案中引用它,但我会用它: http://www.openwall.com/phpass/

此问题的其他版本:How can I store my users' passwords safely?

答案 2 :(得分:0)

这种方法很安全。使用salt值会大大增加破解加密的复杂性。为了获得最佳实践,我会使用较大的盐值。

答案 3 :(得分:0)

最好使用多轮。 PHP中的crypt()函数实现了这一点。

答案 4 :(得分:0)

对密码哈希进行腌制的重点是每个存储的哈希值应该是不同的。这样,攻击者就不能对所有哈希使用单个预先计算的哈希字典(他需要为每个盐值使用单独的字典)。此外,具有相同密码的两个用户将不具有相同的哈希值,因此查看哈希列表的人将无法判断用户的密码是否相同。

This other SO question有更多信息。

答案 5 :(得分:0)

恒定的盐是无用的。相反,你应该使用一些有趣的东西,比如用户的用户名或时间戳。

盐的全部意义在于防止生日攻击,即在没有盐(或使用恒定盐)的情况下散列一堆密码并与存储的哈希进行比较。

另外,较慢的散列算法总是最好增加强力时间。