0

在 PBKDF2 中,每个密码的盐值应该是唯一的,因此使用相同密码的两个用户将获得两个不同的哈希值。

我对 salt 的想法是用户名和密码的 SHA1 哈希,因此每个用户都是唯一的。

实际上,我必须在 JavaScript 环境中生成 PBKDF2 哈希。由于 JavaScript 源代码是纯文本,因此显示盐是如何生成的是否可以保存?

4

2 回答 2

0

使用用户名作为盐主要是令人满意的,但不能防止多种攻击场景。例如,可以在使用相同算法的两个网站的数据库中比较密码。此外,可以提前生成彩虹表,从而减少妥协后的破解时间。出于这个确切原因,应该使用加密 PRNG 生成盐。让攻击者看到随机源的源代码的想法本身不是问题,如果它是不可预测的。有关如何使用 javascript 生成它的信息,请参阅此问题。

于 2013-07-15T18:27:25.543 回答
0

简单地使用随机盐有什么问题?除了您的方法不需要使用散列密码存储盐之外,我想不出任何优势。

连接在一起的用户名和密码的哈希应该没问题。由于密码是秘密的,用户名和密码的哈希值将是不可预测的。但是,正如其他人所提到的,如果有两个网站使用相同的算法,并且使用这些网站的人对两者使用相同的凭据(即查看他们的哈希密码,我们可以知道他们使用相同的密码),则可能存在安全问题。每个网站)。添加您网站的域应该可以解决这个问题。例如(+ 是连接):

salt = hash(domain + username + password)

综上所述,我强烈建议使用加密随机数生成器来生成盐,因为它是盐生成的标准做法。

于 2013-07-15T18:51:22.417 回答