盐和哈希哪个先出现?(这是一个关于IT技术的问题)

19

好的,我知道这可能非常简单,但我似乎找不到一个直接的答案。假设我有以下代码:

Password: "mypassword"
Salt: 1234567

盐值的概念是指像 hash(password + salt) 或者 hash(password) + salt 这样的操作吗?我猜只有前者才有任何意义,但我想确认一下我没有遗漏什么。

请原谅我的无知。

5个回答

21

没错,它是前者。

如果您只是简单地串联盐和哈希,则攻击者可以轻松删除“盐”并使用彩虹表。通过将明文+盐进行哈希,就无法因子分解盐。


12

实际上,它是盐 + 哈希(盐+密码) (盐是哈希计算的一部分 - 但必须保持明文)


3
为什么需要第一个盐?作为一个黑客会不会忽略它而变得无意义? - Diskdrive
1
你需要将它(明文)存储起来,因为如果没有它,你将无法检查密码。 - leonbloy

8

哈希(password + salt)。如果在哈希之后连接盐,那么连接很容易被反转,并且不会增加任何反转密码哈希的难度(使用彩虹表)。

话虽如此,有些系统同时执行两个步骤,例如Django将salt$hash(salt+password)存储在数据库中。这只是为了确保检查密码与哈希的每个数据都可以在一个地方找到。


3

为了完整起见,我在这个问题中添加了这些链接 - 这个咸哈希话题需要对进入其中的主题有广泛的理解,以避免昂贵的错误。

这里未能完全表达的一个关键点是必须为每个密码使用唯一的盐。要了解详情,请阅读链接的内容。

为什么使每个盐都是唯一的:加盐你的密码:最佳实践?

这个话题的广泛概述:盐生成和开源软件


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接