我正在使用各种不安全/可怕的不安全的基于MD5的密码哈希来更新几个项目。我现在至少对最佳做法有了更多的了解,但我仍然怀疑自己是否做错了什么。我还没有看到我在别处使用的具体过程,but at least one SO user seems to want to do something similar。在我的情况下:在登录时重新存储密码有没有什么好处?
使用bcrypt生成密码哈希值。 (因为正确的选项似乎是bcrypt,scrypt或pbkdf2和bcrypt在PHP中最易于访问。)
不同的随机盐用于每个散列。 (为了防止攻击者生成用单个静态盐计算的自定义彩虹表)。
散列,算法设置和salt一起存储。 (因为这是PHP的crypt函数为我提供的散列值。)
成功登录后,散列值将用新的随机盐重新计算。
这是我想知道的最后一步。我的意图是随着时间的流逝允许更新哈希算法,因此定期登录的用户将以最安全的格式存储他们的密码。
我的问题是:
这是浪费时间?
这样做有没有什么危险?
RE#2我认为OP意味着每次登录时使用新盐进行重新哈希处理的具体陷阱或漏洞。 – delnan 2012-08-13 15:25:29
我加了两句话来谈论那个,谢谢@delnan – 2012-08-13 16:06:34
我正在重新哈希一个哈希密码,但不是以直接关系到这个问题的方式。作为使用不安全密码的所有用户的一次性更新,我存储了散列密码的散列(因此我有md5的bcrypt),这些散列密码被标记出来以便我可以检测到它。这是我在每次登录时开始重新哈希密码的原始原因,它允许用户登录时更新这些特殊情况。 – flergl 2012-08-13 16:34:56