如何存储密码盐值

6

我看过各种正确加盐密码的方法。基本原则是在哈希和存储密码之前,将一个随机字符串附加到每个密码上。那么,我能否将盐存储在与密码相同的表中?此外,如果每个条目有不同的盐,是否重要将盐以明文形式存储?


3
https://dev59.com/EnI-5IYBdhLWcg3woKBJ - Ranhiru Jude Cooray
2个回答

7

是的。盐的概念并不在于盐是秘密的,而是它可以使不同用户的相同密码被散列成不同的值。这会增加破解所需的彩虹表大小,或者强制对每个密码分别进行字典(或其他)攻击。


2

加盐的目的是为了避免用户使用相同密码时具有相同的哈希值,只需在密码前面添加用户名并进行哈希处理即可。


1
这可能是一个好主意或坏主意。如果你有很多短用户名,那么盐值对这些特定用户来说太小而无法发挥作用。 - Donnie
你可以将他们的用户名加倍,任何与用户相关的特定内容都可以。 - James T
5
使用用户名作为盐值会比没有要好,但完全随机的字符串仍然更好,因为它具有更多的熵。更好的做法是使用全范围的二进制数据进行随机化(假设字符数据没有使用全范围的位数)。比简单的盐哈希更好的做法是使用类似于PBKDF2或bcrypt的方法。甚至更好的做法是...等等。 - LukeH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接