假设我们不使用 password_hash
并使用 crypt()
与 sha512
而不是散列密码。我们需要在密码中加盐,这样攻击者就不能使用彩虹表攻击。为什么盐必须是好的并且非常随机,如许多 SO 答案中所述?即使 salt 有一点不同或不是很随机,它仍然会给出与其他人完全不同的哈希值。因此,攻击者不会知道谁使用了相同的密码,而且他仍然无法只创建一张彩虹表。
最佳答案
计算和存储强盐需要最少的努力,但减少了使用天文数字小的盐预先计算彩虹表的机会。
如果盐是一个 3 位数字,攻击者可以为所有可能的盐组合预先计算彩虹表。如果盐是一个随机的 24 个字符的字母数字字符串,那么攻击者可以为所有可能的盐预先计算它的可能性几乎为零。
关于hash - 为什么要吃好盐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19137090/