【问题标题】:Legacy app with md5 hashes: how to add salt and SHA1?带有 md5 哈希的旧版应用程序:如何添加盐和 SHA1?
【发布时间】:2012-06-15 01:49:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: hash md5 salt sha


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

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

    【讨论】:

      【解决方案2】:
      • 至于问题 1,我不太确定,但似乎没问题。

      • 对于问题 2:对所有用户使用相同的盐是绝对不行的。盐有两个功能。防止使用预先生成的散列/彩虹表来搜索泄露的数据库,并防止生成基于字典的散列和使用它们搜索数据库。普通盐在第一种情况下会起作用,使彩虹表无法使用,但不会阻止饼干受到字典攻击。如果破解者知道全局盐,他可以生成频繁的密码,对它们进行哈希处理并 grep 整个数据库。如果为每个用户生成盐,则这种情况是不可能的。

      【讨论】:

      • 谢谢,任何提示如何为所有用户实施不同的盐?使用一些现有信息,例如数据库中的 id?
      • 您可以将专用字段添加到数据库中包含漂亮、随机生成的盐的用户实体。如果由于某种原因你不能这样做,那么用户 ID 就可以了。绝对比普通盐好得多,或者根本不加盐
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 2012-04-15
      • 2017-05-04
      相关资源
      最近更新 更多