2017-09-01 64 views
-1

我有后端有密码存储与哈希-A(单程),我想它转换为哈希-B(单程)。我想删除散列-A密码已删除并更改为散列-B如何更改我的应用程序的密码散列?

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

它实际上不可能在旧的应用程序中有任何变化。

什么是最好的方式没有在我的后端保持哈希-A

+3

不幸的是,我认为不改变旧的应用程序是不可能的。有一个交换哈希算法的最佳实践,但我所知道的只有当你可以更改客户端时才有效。 –

回答

1

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

因此,将迭代(工作因子)和可能的附加盐字节添加到已存储的散列值是有意义的。唯一的要求是真正的原始散列没有被完全破坏(即是一个密码安全的散列)并且具有足够大的输出。

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

你不能破解这个,因为hashing-A值不再可用于攻击者,并且没有办法将散列-B逆转成散列-A。当然,在运输过程中保持密码或散列A安全并且仍然非常重要。但是你可以简单地部署TLS 1.2来避免这种情况。