我正在使用各种不安全/极不安全的基于 MD5 的密码哈希来更新几个项目。我现在至少对最佳实践有了更好的了解,但我仍然想知道我是否做错了什么。我还没有看到我在其他地方使用的具体流程,但至少有一个 SO 用户似乎想做类似的事情。就我而言:
密码哈希是使用 bcrypt 生成的。(因为正确的选项似乎是 bcrypt、scrypt 或 pbkdf2,而我在 PHP 中最容易访问 bcrypt。)
每个哈希使用不同的随机盐。(防止攻击者生成使用单个静态盐计算的自定义彩虹表。)
哈希、算法设置和盐存储在一起。(因为这就是 PHP 的 crypt 函数为我提供的哈希值。)
成功登录后,使用新的随机盐重新计算哈希。
这是我想知道的最后一步。我的意图是允许随着时间的推移更新散列算法,以便定期登录的用户将他们的密码存储在最安全的可用格式中。
我的问题是:
这是浪费时间吗?
这样做有什么危险吗?