Hash 先来的是盐还是土豆条?

Hash 先来的是盐还是土豆条?,hash,salt,Hash,Salt,好吧,我知道这可能非常简单,但我似乎在任何地方都找不到一个直接的答案。假设我有以下几点: Password: "mypassword" Salt: 1234567 盐渍的想法是做类似于hash(密码+盐)或hash(密码)+salt?我想只有前者才有意义,但我只是想确保我没有遗漏什么 请原谅我的无知。你知道了,是前者 如果您只是连接了salt和散列,那么攻击者只需删除“salt”并使用彩虹表即可。通过对明文+salt进行散列,无法计算出salt。salt应该是散列计算的一部分散列(密码+sal

好吧,我知道这可能非常简单,但我似乎在任何地方都找不到一个直接的答案。假设我有以下几点:

Password: "mypassword"
Salt: 1234567
盐渍的想法是做类似于
hash(密码+盐)
hash(密码)+salt
?我想只有前者才有意义,但我只是想确保我没有遗漏什么


请原谅我的无知。

你知道了,是前者


如果您只是连接了salt和散列,那么攻击者只需删除“salt”并使用彩虹表即可。通过对明文+salt进行散列,无法计算出salt。

salt应该是散列计算的一部分

散列(密码+salt)。如果在散列之后连接salt,则连接很容易可逆,并且在密码上反转散列(使用rainbow表)时不会增加任何困难


也就是说,有些系统同时做这两件事,例如Django在数据库中存储salt$hash(salt+password)。这只是为了让检查密码和散列所需的每一条数据都在一个地方可用。

实际上,它是
salt+hash(salt+password)
(salt是散列计算的一部分,但您还必须将其保留在明文中)

为了完整性,我在这个问题中添加了这些链接-这个咸哈希主题需要广泛理解其中包含的主题,以避免代价高昂的错误

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

为什么每种盐都是独一无二的:


主题概述:

你为什么需要第一种盐?这难道不是毫无意义的,因为黑客会忽略它吗?你需要存储它(在清除),因为没有它,你将无法检查密码。