【发布时间】:2011-08-10 17:51:15
【问题描述】:
好的,我知道这可能非常简单,但我似乎无法在任何地方找到直接的答案。假设我有以下内容:
Password: "mypassword"
Salt: 1234567
加盐的想法是做hash(password + salt) 或hash(password) + salt 之类的事情吗?我的猜测是只有前者才有意义,但我只是想确保我没有遗漏什么。
请原谅我的无知。
【问题讨论】:
好的,我知道这可能非常简单,但我似乎无法在任何地方找到直接的答案。假设我有以下内容:
Password: "mypassword"
Salt: 1234567
加盐的想法是做hash(password + salt) 或hash(password) + salt 之类的事情吗?我的猜测是只有前者才有意义,但我只是想确保我没有遗漏什么。
请原谅我的无知。
【问题讨论】:
你知道了,是前者。
如果您只是连接盐和哈希,那么攻击者可以简单地删除“盐”并使用彩虹表。通过对明文+盐进行散列,盐不能被分解出来。
【讨论】:
实际上是salt + hash(salt+password)(Salt 是哈希计算的一部分 - 但您也必须保持清晰)
【讨论】:
哈希(密码+盐)。如果您在散列后连接盐,则连接很容易可逆,并且不会增加反转密码哈希的任何困难(使用彩虹表)。
也就是说,有些系统两者兼而有之,例如Django 将 salt$hash(salt+password) 存储在数据库中。这样做很简单,以便根据哈希检查密码所需的每条数据都可以在一个地方获得。
【讨论】:
为了完整起见,我将这些链接添加到这个问题中 - 这个咸散列主题需要对提供给它的主题有广泛的了解,以避免代价高昂的错误。
这里的答案中没有完全表达的一个关键点是为 每个 密码使用唯一盐的必要性。有关原因的详细信息,请阅读链接项目。
为什么要让每个盐都独一无二:Salting Your Password: Best Practices?
对该主题的广泛概述:Salt Generation and open source software
【讨论】:
盐应该是哈希计算的一部分
【讨论】: