散列函数加密 - 数据库如何知道密码是否正确?

问题描述:

我在理解用于密码加密的哈希函数时遇到了麻烦。比方说,用户注册一个网站,密码通过散列函数,并且摘要登录到数据库中。所以,实际的密码不存储在数据库中。现在,当用户想要登录时,他输入密码。数据库如何知道密码是正确的?在登录期间键入的密码是否再次通过散列函数?但是我们会有两个不同的摘要,那么它是如何进行的?散列函数加密 - 数据库如何知道密码是否正确?

+2

为什么你认为*“我们将有两个不同的摘要”*?如果密码,盐,迭代次数相同,我们不会。 –

+1

我真的建议你阅读这个:https://crackstation.net/hashing-security.htm 这里是你需要知道的关于散列,他们的安全和他们是如何使用的“一切”。 – ProXicT

详细说明@ArtjomB。

通常使用散列密码保存salt和迭代计数,有时在散列前用分隔符连接。

然后,可以将相同的salt和迭代计数应用于密码尝试以生成匹配的散列。

注意:盐和迭代计数都不需要保密。

要使用的一个更好的函数是PBKDF2(基于密码的密钥推导函数2),而不是原始哈希函数,例如SHA256或带SHA256的HMAC。不应使用MD5和SHA1功能。