我记得读过一个方案,其中检查密码的过程是这样的:
- 在数据库中给定(哈希,盐),
- 带盐的哈希密码以检查哈希,
- 以旧哈希为 salt 的哈希密码,
- 在数据库中存储(新哈希,盐又名旧哈希)。
我找不到原始来源。无论如何,我不明白
使用旧哈希作为盐有什么好处(而不是使用随机盐),
该方案的总体优势是什么(使彩虹表攻击更加复杂?),以及
如果有优势,人们将如何使用 PHPass 应用该方案,因为盐似乎是在“内部”PHPass 中管理的......
直觉上,我认为这个方案充其量不会做任何事情,或者在最坏的情况下会恶化安全性(由于对过去值的依赖),但密码安全性是我不相信我的直觉的一个领域。请赐教。
编辑:
我问的是在每张支票上重新散列密码。这些类似的问题确实回答了第一个问题——使用哈希作为盐是没有用的——但不是在每次检查时重新哈希是否有用: