首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将使用sha256的密码转换为sha256 + salt

将使用sha256的密码转换为sha256 + salt
EN

Stack Overflow用户
提问于 2017-03-20 00:31:38
回答 2查看 11.4K关注 0票数 0

我有一个很大的数据库,用户和密码在sha256散列。现在我编写了新版本,我想使用sha256+salt。有没有一种方法可以将与sha256相同的密码转换为sha256+salt,并且在登录时没有问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 00:59:33

加盐和散列密码的方法是采用明文密码,将盐添加到密码中,然后对其进行散列。当你有一个已经被sha256哈希的现有密码数据库时,你就没有明文密码了,而且一旦被哈希,你就不能轻易地把它们恢复成明文(这是一件好事)。

相反,您可以采用当前形式的密码,sha256散列,添加盐,然后第二次散列它们-或更好的:多次,使用更好的散列算法。

然后,验证密码的功能将重复这些步骤,以检查密码是否正确。假设第二个散列只是sha256散列一次,以使示例更清晰,尽管它的不够安全

  1. step1 = sha256(plaintext_password)
  2. password = sha256(step1 + salt)

如果您确实希望避免在现有散列之上工作,您可以创建一个新的用户表,您可以在其中以新的方式从头开始处理密码,然后在用户使用明文密码登录时逐渐将用户的密码迁移到新表中,并从旧表中删除它们。

第三种解决方案可能是停用所有旧账户,并要求它们在重新登录之前通过fx更改密码。通过电子邮件给他们发送一个更改密码的链接。

合乎道理?

也就是说,你将在https://security.stackexchange.com上获得更多合格的答案。例如,我刚刚发现this question关于为什么salt->sha256散列不够安全,and another one here关于如何处理密码以实现更安全的存储。

票数 0
EN

Stack Overflow用户

发布于 2017-03-20 02:55:49

当然,这是一个好主意,使您的密码散列更安全,但使用盐SHA-256是错误的方法。

最佳实践是使用具有成本因子的密码散列函数,该函数允许控制计算散列所需的时间。好的算法是BCrypt,SCrypt,Argon2和PBKDF2。在另一个answer中,我试图解释如何切换到新的算法。

像SHA-256这样的快速散列的问题是令人难以置信的GPU的速度,一个人可以蛮力关于3 Giga SHA-256 per second与负担得起的硬件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42889101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档