Authentication 了解salt在身份验证中的用途

Authentication 了解salt在身份验证中的用途,authentication,salt,Authentication,Salt,根据我的研究,食盐的目的是阻止彩虹桌的使用。之所以这样做,是因为创建rainbow表只是为了查找不含盐的唯一密码的哈希。我有一个矛盾的理解,当盐被引入时,我们不能使用彩虹表。假设我们有以下场景: 我是一个恶意黑客,我想进入富人的银行账户。我能够访问银行的数据库,数据库中的salt和哈希字符串清晰可见,这是用户密码和salt fpassword+salt的函数。盐是fsd88。接下来我从网络上的黑客那里得到了一张彩虹表。太好了,所以我已经准备好发财并搬到瑞士去了 接下来我要做的是,根据一个在线教程

根据我的研究,食盐的目的是阻止彩虹桌的使用。之所以这样做,是因为创建rainbow表只是为了查找不含盐的唯一密码的哈希。我有一个矛盾的理解,当盐被引入时,我们不能使用彩虹表。假设我们有以下场景:

我是一个恶意黑客,我想进入富人的银行账户。我能够访问银行的数据库,数据库中的salt和哈希字符串清晰可见,这是用户密码和salt fpassword+salt的函数。盐是fsd88。接下来我从网络上的黑客那里得到了一张彩虹表。太好了,所以我已经准备好发财并搬到瑞士去了

接下来我要做的是,根据一个在线教程,把散列的字符串放到rainbow表上查找,这大约需要一个小时。彩虹表查找然后返回passwfsd88。因为我知道盐是fsd88。我现在知道密码是什么了!是passw


我的盐的心理模型有什么问题?感谢阅读。

在计算散列之前添加盐:

$password = 'secret';
$salt = 'kU832hNWQ2122093uiue';
$passwordHash = hash($password + $salt);
在本例中,未计算密码“secret”的哈希值,而是“secretkU832hNWQ2122093uiue”的哈希值。没有人会用这样的密码创建彩虹表,如果你找到一个预先计算的彩虹表,它将包含“secret”的散列

当然,你可以用这个salt构建一个包含可能密码列表的rainbow表salt不是秘密,但是如果每个密码都有其唯一的salt,那么你就必须分别为每个密码构建rainbow表。这意味着,salt阻止使用单个彩虹表一次获取所有密码


很高兴知道我现在很富有,来自瑞士的问候:-

彩虹表没有所有可能的盐。是的,但是如果我有一个彩虹表,有所有可能的10个字符的密码呢。我只需查找散列并删除salt即可获得密码。您需要所有可能的10个字符的密码与所有可能的salt进行散列。我投票将此问题作为离题题来结束,因为这是关于计算机安全的,而不是编程。security.stackexchange.com上有答案