【发布时间】:2010-10-15 01:33:38
【问题描述】:
我一直很好奇...为哈希加密密码时哪个更好:前缀还是后缀?为什么?还是只要你加盐就可以了?
解释一下:我们现在都(希望)知道我们应该salt 一个密码,然后我们将其哈希存储在数据库中[编辑:所以你可以避免像what happened to Jeff Atwood recently 这样的事情]。通常这是通过在将盐传递给散列算法之前将盐与密码连接起来来完成的。但例子各不相同......一些例子在密码前加上盐。一些示例在密码之后添加盐。我什至见过一些人试图把盐放在中间。
那么哪种方法更好,为什么?有没有一种方法可以减少哈希冲突的机会?我的谷歌搜索还没有对这个主题进行像样的分析。
编辑:很好的答案伙计们!对不起,我只能选择一个答案。 :)
【问题讨论】:
-
最佳实践是使用加密函数为您进行加盐处理,使用 PBKDF2(标准)、bcrypt 甚至 scrypt。感谢斯蒂芬指出这一点。
-
几乎所有标准密码散列结构都负责组合盐和密码,因此您不必担心这一点。如果您不使用标准密码哈希,请迁移到一个。
-
@Omu 不好的推荐。 1) SHA-1 的单次迭代太快了,你至少应该使用 10000,即使这样也很弱。 2)默认盐太小。最少 8 个字节,建议使用 16 个。
标签: hash cryptography passwords salt