【发布时间】:2013-10-02 12:38:59
【问题描述】:
假设我们不使用password_hash,而是使用crypt() 和sha512 来散列密码。我们需要在密码中添加盐,所以攻击者无法使用彩虹表攻击。为什么盐必须是 good 并且非常随机,如许多 SO 答案中所述?即使盐的差异很小或不是很随机,它仍然会给出与其他完全不同的哈希值。因此,攻击者不知道谁使用了相同的密码,他仍然无法创建一个彩虹表。
【问题讨论】:
-
好的随机盐应该不可能“猜”出一个盐。
-
“好”我假设您的意思是“随机”,在这种情况下您应该阅读this answer,特别是“那么,为什么盐必须是随机的?”
-
@Rufinus 如果他得到密码,他就会得到盐。
-
从一行中使用用户的
Id,和另一个更复杂的值,不是一回事,因为ID很容易被猜到。