为数据库中的每个密码存储两个哈希是一个好主意吗?

时间:2017-05-06 20:04:35

标签: hash cryptography passwords

为数据库中的每个密码(例如SHA-1和MD5)存储两个哈希是否是个好主意,并检查登录脚本中的两个哈希以防止冲突?另一方面,从两个哈希值计算密码会不会更容易(例如,如果黑客可以访问数据库)?

2 个答案:

答案 0 :(得分:1)

这可能没用。

你使用的任何哈希函数都可以安全地防止意外碰撞 - 它们几乎不可能发生。因此,您唯一关注的问题是,当黑客已经破坏了您的数据库并拥有您的哈希值时,会尝试找出生成目标哈希值的密码。

这被称为“第二次原像攻击”,而且非常难。对于任何相对较新的算法,甚至回到MD4都没有已知的第二个原像攻击。这不应该是一个严重的问题。

但是,如果您正在使用通用哈希函数,那么人们强行攻击您的黑客哈希 是一个现实问题。 您不应使用像SHA-2这样的通用哈希函数,即使使用salt 也是如此。你应该使用密码哈希函数,比如bcrypt,它可以抵抗暴力破解。如果您正在使用普通哈希函数,那么,正如您所指出的那样,存储两个意味着他们只需要强行使用较弱的函数 - 这是可能出错的另一件事。

不要打扰。请改用密码哈希函数。它会更安全,更简单。

答案 1 :(得分:0)

我真的不知道如何为密码存储2个哈希值然后检查这两个哈希值有什么好处。你在这里所做的就是给你的应用做更多的工作,而且我认为他们没有提供任何额外的安全级别,因为他们仍在输入相同的密码。