3

我读过,验证用户身份的一种更安全的方法是在对密码进行哈希处理时使用一次性盐。我不明白的是:

如果客户端每次会话都生成一个新的盐,那么每次会话生成的盐+密码哈希不会不同吗?如果是这样,服务器如何将发送的密码与其存储的密码进行比较?服务器有没有办法比较不同的哈希值并且仍然能够辨别使用了相同的密码?

(免责声明:我不是想重新发明轮子/编写登录协议(我知道,我知道:使用 SSL/TLS)。我只是对登录协议的高级功能感到好奇)

4

2 回答 2

3

只有当用户最初设置密码时,您才会生成新的盐。然后将盐与密码哈希一起保存。

于 2011-09-21T22:16:43.467 回答
3

您只需要生成一次盐,并且每次更改密码时都可以。

客户不需要将盐存储在任何地方,甚至不需要意识到这一点。盐将由服务器存储 - 与哈希一起。

建议您将哈希和盐存储在两个不同的数据库中。

于 2011-09-22T17:10:20.943 回答