想知道在每次更改密码时,盐是否对于单个用户是唯一的很重要,还是重复使用相同的盐不会有太大影响。
我目前为每个给定用户更新密码时生成一个新的随机字符串作为盐。这样,每次用户有新密码时也会更换盐。这很容易实现,所以为什么不呢。
嗯...原因就在这里。我需要存储先前的X个密码以确保不重复使用密码。在旧日子里(我上次编写此代码时),我可以只存储以前的MD5哈希,并将新哈希与该列表进行比较。好吧,现在我正在使用盐散列,其中盐每次都是唯一的,因此不再知道先前的盐,这些比较也不再可能。
为了使该系统正常工作,我有两个选择:除了最终哈希之外,还要存储盐的历史记录,或者每次更新密码时为任何一个给定用户重复使用相同的盐。这两者都可以让我构建可与历史记录进行比较的值。
后者工作量较少,但它会失去任何强度吗?从实际角度来看,我认为没有。我想在这里得到第二个意见。谢谢。
为了使问题“可回答”-是否为任何一个用户重复使用相同的盐,以保持可搜索的密码历史记录(以防止密码回收)会有可接受的最小保护减少?