Passwords 使用sha256将密码转换为sha256+;盐

Passwords 使用sha256将密码转换为sha256+;盐,passwords,sha256,data-conversion,Passwords,Sha256,Data Conversion,我有一个大数据库,用户和密码都在sha256哈希中。现在我编写新版本,我想使用sha256+salt。有没有一种方法可以将使用sha256的相同密码转换为sha256+salt,并且在登录时没有问题?对密码进行salt和哈希处理的方法是使用明文密码,将salt添加到其中,然后对其进行哈希处理。如果已有密码数据库已经进行了sha256哈希运算,那么就没有明文密码,而且一旦进行哈希运算,就无法轻松地将其恢复为明文(这是一件好事) 你可以做的是将密码以当前形式进行sha256散列,添加salt,然后第

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

对密码进行salt和哈希处理的方法是使用明文密码,将salt添加到其中,然后对其进行哈希处理。如果已有密码数据库已经进行了sha256哈希运算,那么就没有明文密码,而且一旦进行哈希运算,就无法轻松地将其恢复为明文(这是一件好事)

你可以做的是将密码以当前形式进行sha256散列,添加salt,然后第二次对其进行散列-或更好的:很多次,使用更好的散列算法

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

  • 步骤1=sha256(明文密码)
  • 密码=sha256(步骤1+salt)
  • 如果您真的不想在现有哈希表的基础上工作,您可以创建一个新的用户表,从一开始就以新的方式处理密码,然后在用户使用明文密码登录时逐渐将其密码迁移到新表中,并将其从旧表中删除

    第三个解决方案是停用所有旧帐户,并要求他们在通过fx再次登录之前更改密码。通过电子邮件向他们发送更改密码的链接

    有道理吗


    也就是说,你会在第二天得到更多的合格答案。例如,我刚刚了解了为什么salt->sha256 hashing once不够安全,以及如何处理密码以获得更安全的存储。

    对密码进行salt和hash处理的方法是获取明文密码,将salt添加到其中,然后对其进行hash处理。如果已有密码数据库已经进行了sha256哈希运算,那么就没有明文密码,而且一旦进行哈希运算,就无法轻松地将其恢复为明文(这是一件好事)

    你可以做的是将密码以当前形式进行sha256散列,添加salt,然后第二次对其进行散列-或更好的:很多次,使用更好的散列算法

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

  • 步骤1=sha256(明文密码)
  • 密码=sha256(步骤1+salt)
  • 如果您真的不想在现有哈希表的基础上工作,您可以创建一个新的用户表,从一开始就以新的方式处理密码,然后在用户使用明文密码登录时逐渐将其密码迁移到新表中,并将其从旧表中删除

    第三个解决方案是停用所有旧帐户,并要求他们在通过fx再次登录之前更改密码。通过电子邮件向他们发送更改密码的链接

    有道理吗


    也就是说,你会在第二天得到更多的合格答案。例如,我刚刚了解了为什么salt->sha256哈希一次不够安全,以及如何处理密码以获得更安全的存储。

    让密码哈希更安全当然是个好主意,但使用salt->SHA-256是错误的选择

    最佳实践是使用带有成本因子的密码哈希函数,这允许控制计算哈希所需的时间。好的算法是BCrypt、SCrypt、Argon2和PBKDF2。在另一篇文章中,我试图解释如何切换到新算法


    像SHA-256这样的快速散列的问题是GPU难以置信的速度,人们可以用负担得起的硬件进行暴力操作。

    让密码散列更安全当然是个好主意,但使用盐腌SHA-256是错误的做法

    最佳实践是使用带有成本因子的密码哈希函数,这允许控制计算哈希所需的时间。好的算法是BCrypt、SCrypt、Argon2和PBKDF2。在另一篇文章中,我试图解释如何切换到新算法


    像SHA-256这样的快速散列的问题是GPU难以置信的速度,人们可以用价格合理的硬件进行暴力操作。

    很高兴能提供帮助。我无意中写了
    sha1
    ,但我的意思是
    sha256
    ,所以用它更新了我的答案。也许我会将前两种解决方案结合起来,这样所有老用户的密码都会得到更好的保护,即使他们暂时不登录,同时在登录时逐渐将用户群移动到新表中,在新表中,密码只被散列一次。顺便说一句,您可能会在登录时得到更好的答案。外汇。我刚刚了解了单用sha256+散列的安全性和不安全性,以及如何安全地散列密码。答案中的注释链接和信息会更好,并简要说明了为什么即使使用一次或两次salt,也只对密码进行散列是不安全的,不应该这样做。这一点很好。我至少对回复进行了编辑,使其更加通用,以便更好地应用于存储的密码处理,同时建议不要只使用sha256+salt。最后,我建议现在在答案中加入security.stackexchange.com。很高兴为您提供帮助。我无意中写了
    sha1
    ,但我的意思是
    sha256
    ,所以用它更新了我的答案。也许我会将前两种解决方案结合起来,这样所有老用户的密码都会得到更好的保护,即使他们暂时不登录,同时在登录时逐渐将用户群移动到新表中,在新表中,密码只被散列一次。顺便说一句,您可能会在登录时得到更好的答案。外汇。我只是