我被要求对 Intranet 站点实施一些更改/更新;正如他们所说,使其成为“面向未来”。
我们发现密码是使用 MD5 算法进行哈希处理的。 (该系统自 2001 年以来就已经存在,所以当时已经足够了)。
我们现在想要将哈希算法升级为更强的算法(BCrypt-hash 或 SHA-256)。
We obviously do not know the plaintext-passwords and creating a new password for the userbase is not an option*).
所以,我的问题是:
在无法访问明文密码的情况下更改哈希算法的可接受方法是什么?
最好的解决方案是完全“在幕后”的解决方案。
*) we tried; tried to convince them, we used the argument of 'password age', tried to bribe them with coffee, tried to bribe them with cake, etc. etc. But it is not an option.
Update
我希望有某种自动解决方案来解决问题,但显然除了“等待用户登录,然后转换”之外没有其他选择。
好吧,至少现在我现在没有其他的解决办法了。
首先,在数据库中添加一个字段来识别密码是使用MD5还是新算法。
对于仍然使用 MD5 的所有密码:
-- 在登录过程中,验证用户输入的密码:将用户提交的密码临时存储在内存中(这里没有安全问题,因为它已经在内存中的某处)并执行通常的 MD5 哈希并与存储的哈希进行比较;
-- 如果给出了正确的密码(与现有哈希匹配),则通过新算法运行临时存储的密码,存储该值,更新新字段以标识该密码已更新为新算法。
(当然,您只需对任何新用户/新密码使用新算法。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)