为什么 bcrypt 总是 returns 不同的结果?

Why bcrypt always returns different results?

考虑以下打字稿:

$ ./artisan tinker
>>> bcrypt('123456')
=> "y$YLswQefA6JXTYMM5nH90we9siAtG71I1/LMa5XIkplCF32EMtXmKK"
>>> bcrypt('123456')
=> "y$LoakjerqalqFxI6r.BR.x.K1fycqWS59Xqfj.pblSzlPNLOcbWa/6"

这是为什么?

每次用的盐都不一样。 A random salt is mixed in to the hash to prevent precomputed hash tables 被使用。如果不加盐,攻击者将能够检测到像 password123 这样的常见字符串,因为它们具有可识别的哈希值。加盐确保哈希不可预测。