【问题标题】:What comes first, the salt or the hash?首先是盐还是哈希?
【发布时间】:2011-08-10 17:51:15
【问题描述】:

好的,我知道这可能非常简单,但我似乎无法在任何地方找到直接的答案。假设我有以下内容:

Password: "mypassword"
Salt: 1234567

加盐的想法是做hash(password + salt)hash(password) + salt 之类的事情吗?我的猜测是只有前者才有意义,但我只是想确保我没有遗漏什么。

请原谅我的无知。

【问题讨论】:

    标签: hash salt


    【解决方案1】:

    你知道了,是前者。

    如果您只是连接盐和哈希,那么攻击者可以简单地删除“盐”并使用彩虹表。通过对明文+盐进行散列,盐不能被分解出来。

    【讨论】:

      【解决方案2】:

      实际上是salt + hash(salt+password)(Salt 是哈希计算的一部分 - 但您也必须保持清晰)

      【讨论】:

      • 为什么需要第一种盐?黑客会忽略它,这不是毫无意义吗?
      • 您需要存储它(明文),因为没有它您将无法检查密码。
      【解决方案3】:

      哈希(密码+盐)。如果您在散列后连接盐,则连接很容易可逆,并且不会增加反转密码哈希的任何困难(使用彩虹表)。

      也就是说,有些系统两者兼而有之,例如Django 将 salt$hash(salt+password) 存储在数据库中。这样做很简单,以便根据哈希检查密码所需的每条数据都可以在一个地方获得。

      【讨论】:

        【解决方案4】:

        为了完整起见,我将这些链接添加到这个问题中 - 这个咸散列主题需要对提供给它的主题有广泛的了解,以避免代价高昂的错误。

        这里的答案中没有完全表达的一个关键点是为 每个 密码使用唯一盐的必要性。有关原因的详细信息,请阅读链接项目。

        为什么要让每个盐都独一无二:Salting Your Password: Best Practices?

        对该主题的广泛概述:Salt Generation and open source software

        【讨论】:

          【解决方案5】:

          盐应该是哈希计算的一部分

          【讨论】:

            猜你喜欢
            • 2016-04-20
            • 2011-05-27
            • 1970-01-01
            • 1970-01-01
            • 2012-12-14
            • 1970-01-01
            • 2013-06-22
            • 2012-08-21
            • 1970-01-01
            相关资源
            最近更新 更多