Encryption 哈希函数加密-数据库如何知道密码是否正确?

Encryption 哈希函数加密-数据库如何知道密码是否正确?,encryption,hash,Encryption,Hash,我在理解密码加密中使用的哈希函数时遇到问题。假设用户注册一个网站,密码通过散列函数传递,摘要进入数据库。因此,实际密码不会存储在数据库中。现在,当用户想要登录时,他输入密码。数据库如何知道密码是正确的?登录期间键入的密码是否再次通过哈希函数?但是我们会有两个不同的摘要,那么它是如何进行的呢 详细说明@ArtjomB 通常使用散列密码保存salt和迭代计数,有时在散列前面连接分隔符 然后,可以对密码尝试应用相同的salt和迭代计数,以生成匹配的散列 注意:salt和迭代计数都不需要保密 更好的函数

我在理解密码加密中使用的哈希函数时遇到问题。假设用户注册一个网站,密码通过散列函数传递,摘要进入数据库。因此,实际密码不会存储在数据库中。现在,当用户想要登录时,他输入密码。数据库如何知道密码是正确的?登录期间键入的密码是否再次通过哈希函数?但是我们会有两个不同的摘要,那么它是如何进行的呢

详细说明@ArtjomB

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

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

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


更好的函数之一是PBKDF2(基于密码的密钥派生函数2),而不是原始散列函数,如SHA256或带有SHA256的HMAC。不应使用MD5和SHA1函数。

为什么您认为“我们将有两个不同的摘要”?我们不知道密码、salt和迭代次数是否相同。我真的建议您阅读以下内容:以下是您需要了解的有关哈希、其安全性以及如何使用它们的“一切”。