可能重复:
password hashing
哈希密码的最佳做法是什么?
我做了以下事情:
$salt = 12345;
$hash = hash("sha256", $_POST['password'] . $salt);
有更好的解决方案并且安全吗?
答案 0 :(得分:2)
我个人建议使用bcrypt。 主要原因是它很慢。这有助于减缓对哈希的攻击。如果您使用带有密码的密码,如果您的哈希列表落入坏人手中,这将使事情变得更加困难。
这篇文章更详细地解释了它:
http://codahale.com/how-to-safely-store-a-password/
答案 1 :(得分:1)
在我正在寻找的另一个答案中引用它,但我会用它: http://www.openwall.com/phpass/
答案 2 :(得分:0)
这种方法很安全。使用salt值会大大增加破解加密的复杂性。为了获得最佳实践,我会使用较大的盐值。
答案 3 :(得分:0)
最好使用多轮。 PHP中的crypt()函数实现了这一点。
答案 4 :(得分:0)
对密码哈希进行腌制的重点是每个存储的哈希值应该是不同的。这样,攻击者就不能对所有哈希使用单个预先计算的哈希字典(他需要为每个盐值使用单独的字典)。此外,具有相同密码的两个用户将不具有相同的哈希值,因此查看哈希列表的人将无法判断用户的密码是否相同。
This other SO question有更多信息。
答案 5 :(得分:0)
恒定的盐是无用的。相反,你应该使用一些有趣的东西,比如用户的用户名或时间戳。
盐的全部意义在于防止生日攻击,即在没有盐(或使用恒定盐)的情况下散列一堆密码并与存储的哈希进行比较。
另外,较慢的散列算法总是最好增加强力时间。