如何更改应用程序的密码哈希?

时间:2017-09-01 05:32:17

标签: java database encryption cryptography password-protection

我的后端有密码存储 Hashing-A (单向),我希望它转换为 Hashing-B (单向)。我想删除 Hashing-A 密码,并将其更改为 Hashing-B

在后端我可以在下次登录时简单地将密码更改为Hashing-B,但真正的问题是在应用程序中,我的应用程序通过 Hashing-A 发送密码,我可以更改它但是旧的应用程序将继续面临同样的问题,我不能简单地推出旧的应用程序。

几乎不可能对旧应用程序进行任何更改。

在我的后端不保留Hashing-A 的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

通常使用带有强化的密码哈希来避免对数据库进行暴力破坏或字典攻击。如果攻击者窃取服务器或数据库,则很难检索密码,因为盐和迭代计数将为密码本身的强度增加额外的防御级别。

因此,在已存储的哈希值中添加迭代(工作因子)和可能的附加盐字节是有意义的。唯一的要求是确实原始哈希没有被完全打破(即加密安全哈希),输出足够大。

您可以做的是为新更改的哈希值添加某种标识符 - 协议标识符和可能的参数。这样你甚至可以在线更改哈希值,选择直接比较 - 在​​你的情况下 - 或在服务器上添加工作来执行B哈希。

你无法破解这一点,因为哈希-A值不再可用于攻击者,并且无法将哈希-B转换为散列-A。当然,在传输过程中保持密码或散列-A安全是至关重要的。但您可以简单地部署TLS 1.2以避免这种情况。