我有一个很大的数据库,用户和密码在sha256散列。现在我编写了新版本,我想使用sha256+salt。有没有一种方法可以将与sha256相同的密码转换为sha256+salt,并且在登录时没有问题?
发布于 2017-03-20 00:59:33
加盐和散列密码的方法是采用明文密码,将盐添加到密码中,然后对其进行散列。当你有一个已经被sha256哈希的现有密码数据库时,你就没有明文密码了,而且一旦被哈希,你就不能轻易地把它们恢复成明文(这是一件好事)。
相反,您可以采用当前形式的密码,sha256散列,添加盐,然后第二次散列它们-或更好的:多次,使用更好的散列算法。
然后,验证密码的功能将重复这些步骤,以检查密码是否正确。假设第二个散列只是sha256散列一次,以使示例更清晰,尽管它的不够安全
如果您确实希望避免在现有散列之上工作,您可以创建一个新的用户表,您可以在其中以新的方式从头开始处理密码,然后在用户使用明文密码登录时逐渐将用户的密码迁移到新表中,并从旧表中删除它们。
第三种解决方案可能是停用所有旧账户,并要求它们在重新登录之前通过fx更改密码。通过电子邮件给他们发送一个更改密码的链接。
合乎道理?
也就是说,你将在https://security.stackexchange.com上获得更多合格的答案。例如,我刚刚发现this question关于为什么salt->sha256散列不够安全,and another one here关于如何处理密码以实现更安全的存储。
发布于 2017-03-20 02:55:49
当然,这是一个好主意,使您的密码散列更安全,但使用盐SHA-256是错误的方法。
最佳实践是使用具有成本因子的密码散列函数,该函数允许控制计算散列所需的时间。好的算法是BCrypt,SCrypt,Argon2和PBKDF2。在另一个answer中,我试图解释如何切换到新的算法。
像SHA-256这样的快速散列的问题是令人难以置信的GPU的速度,一个人可以蛮力关于3 Giga SHA-256 per second与负担得起的硬件。
https://stackoverflow.com/questions/42889101
复制相似问题