目前在网络上存储密码的最佳实践似乎是使用 bcrypt 而不是 sha256 或任何其他散列算法。Bcrypt 看起来很棒,但我认为它有一个缺陷:如果我有一个使用 10 工作因子填充密码的数据库,并且我想将该工作因子增加到 12,因为计算能力增加了,那么我无法做到这一点不知道用户密码,这意味着等到他们再次登录。这会给放弃帐户的用户带来问题。
在我看来,另一种解决方案是使用 sha256 并执行等于 2^(工作因子)的次数。如果我这样做,那么当我想增加工作系数时,我可以对每个存储的密码的通过次数进行差异化。
我已经写了一些代码来做到这一点,我想从每个人那里得到关于这是否是一个好主意的反馈。