使用md5哈希的旧版应用:如何添加盐和SHA1?

时间:2012-06-12 07:32:45

标签: hash md5 salt sha

我有一个遗留应用程序,其中密码使用MD5进行哈希处理而不使用盐。我想用盐切换到SHA1,但我想保留当前用户的密码。

我的计划是将散列函数更改为sha1(md5(password) + salt)。我将能够使用sha1(<existing_pass> + salt)批处理所有现有的哈希值。

  1. 在这种情况下保留md5是否安全?
  2. 所有用户都可以使用一个盐吗?

2 个答案:

答案 0 :(得分:1)

  • 关于问题1,我不太确定,但似乎没问题。

  • 对于问题2:为所有用户提供相同的盐永远都不行。盐有两个功能。防止使用预先生成的哈希/彩虹表来搜索泄漏的数据库,并防止生成基于字典的哈希并使用它们搜索数据库。普通盐将在第一种情况下工作,使彩虹表无法使用,但不会阻止破解者进行字典攻击。如果cracker知道全局盐,他可以生成频繁的密码,哈希它们并grep整个数据库。如果每个用户生成salt,则无法使用此方案。

答案 1 :(得分:1)

  1. 保留md5不是一个好主意,请阅读这个问题:Use SHA-512 and salt to hash an MD5 hashed password?

  2. 每个用户最好有一个盐。使用相同的salt,具有相同密码的用户将具有相同的哈希值,并且可以同时为所有密码创建彩虹表。