我正在使用MD5(无盐)散列用户密码的系统上工作。我想使用SHA-512和盐更安全地存储密码。使用SHA-512和salt来散列MD5散列密码?
虽然这很容易实现未来的密码,但我还想改造现有的MD5哈希密码,最好不要强迫所有用户更改其密码。我的想法是只使用SHA-512和适当的盐来散列现有的MD5散列。然后,我可以在数据库中设置一些标志,指明哪些密码是从纯文本进行散列的,哪些是从MD5哈希散列的。或者我可以在验证用户时尝试这两种方法。甚至可以用MD5和SHA-512/salt对新密码进行哈希处理,这样就可以将它们视为旧密码。
以编程方式,我不认为这会是一个问题,但我不太了解加密/散列,以便知道我是否以任何方式危害散列的质量,方法是应用SHA-512/salt散列到已经被MD5散列的密码。我的第一个直觉是,如果有的话,它会更强大,一个非常轻松的关键。我的第二个直觉是我并不真正知道自己在说什么,所以我最好得到建议。有什么想法吗?
与MD5相比,SHA-512只能提供很小的改进(例如:'MD5(salt + password)'实际上等同于'SHA512(salt + password)')。 MD5和SHA系列之类的通用散列函数不是用来存储密码的。使用bcrypt。 – NullUserException 2012-10-30 21:55:53
非常真实。我其实打算做关键的延伸,但没有在我的问题中说清楚。我最终使用PBKDF2而不是天真地实现我自己的密钥伸展算法。 – 2012-10-31 13:00:14