我知道盐可以让相同的密码哈希为不同的值。但是,盐通常与密码一起存储在数据库中。那么,假设我是一个攻击者,这里是我可能如何使用字典攻击来破解盐(注意,在此示例中,出于简洁起见,我没有写出128位哈希或盐):
user_pw = 'blowfish'
Given:
email = 'blah@blah.com'
hash = '1234567890'
salt = '0987654321'
function attack(){
for each(word in dictionary)
md5( word * salt ) == hash ? cracked_one(email, word)
}
我了解这可以防止黑客使用彩虹表... 但似乎不能防止字典攻击。 我想你可以向哈希算法添加其他内容,但在安全方面,我们必须假设攻击方法已知。
因此,盐值似乎可以防止黑客找出哪些密码很可能是字典密码(多个用户共用的密码),并防止彩虹攻击... 但无法防止字典攻击。
这个分析正确吗?有什么更好的安全建议吗?
谢谢!