我只是在输入盐和 php 文档,人们总是使用一些随机变量函数。输入盐而不是生成盐有什么缺点?
问问题
139 次
2 回答
1
为什么要强迫你的用户输入一些东西?
随机生成的字节将具有比用户输入(通常只有字母数字 ASCII)更多的熵。
于 2011-12-05T23:05:32.097 回答
1
加盐的目的是为哈希添加熵。 密码散列的设计使得输入的微小变化会对生成的散列产生巨大的影响,因此(除非算法中存在缺陷)通过检查两个不同加盐的相似性来知道原始输入是否相同变得不可能哈希。
但是,如果你对每个人都使用相同的盐,你就会失去很多好处。 使用相同盐散列的两个相同密码将为您提供相同的散列。
如果您对每个人都使用相同的盐,那么至少有人可以找出两个用户具有相同的密码。
更重要的是,它大大减少了人们破解密码所花费的时间,因为他们现在可以一次针对每个用户检查相同的哈希值。
在最坏的情况下,有人可能已经有了您使用的盐的查找表,因此破解每个用户的密码变得轻而易举。
虽然可以使用简单的盐(如用户的 ID)来实现使破解更难的目标,但使用随机字符串只需要一点点努力,并使破解更加困难(因为几乎不可能预测盐提前,为该盐拥有一个预先计算的查找表的机会变得低得多)。
于 2011-12-05T23:29:32.433 回答