关于腌制密码的另一个问题

Cat*_*ish 1 php security passwords hash salt

我知道有很多关于salting密码的博客,文章和问题,但有一点我无法找到答案是:

如果我生成这样的密码哈希:

$salt = randomString
$password = $_POST['password'] 
hashedPassword = sha1($password.$salt)
Run Code Online (Sandbox Code Playgroud)

我有一张这样的桌子:

Users
user_id | hashedPassword | salt
Run Code Online (Sandbox Code Playgroud)

为什么攻击者难以识别此密码?难道他们不能只使用彩虹表,或蛮力来弄清楚盐,然后将盐附加到字典攻击中的每个单词?

Mic*_*rdt 5

难道他们不能只使用彩虹桌,或蛮力来弄清楚盐,

那会怎么样?但无论如何这都是一个无问题 - 假设攻击者知道盐.它的目的不是秘密,这就是你将它存储在哈希旁边的原因.

然后将盐附加到词典攻击中的每个单词?

当然他们可以做到这一点,但他们必须为特定用户做这件事.它们不能分摊数据库中所有用户的工作量,也不能使用预先计算的哈希 - >密码映射表.

那,只有那是盐的点.