什么是 Salt Rounds 以及 Salts 如何存储在 Bcrypt 中?

What are Salt Rounds and how are Salts stored in Bcrypt?

我正在尝试为我正在制作的节点应用程序配置 Bcrypt,并且有几个关于盐的问题,我希望这里的人可以帮助回答。

  1. "salt round" 实际上是指 成本因素。成本因素控制计算单个 BCrypt 哈希所需的时间。成本因素越高,完成的散列轮数越多。将成本因子增加 1 会使必要的时间加倍。需要的时间越多,暴力破解就越困难。
  2. salt 是一个随机值,每次计算都应该不同,因此结果几乎不会相同,即使是相同的密码。
  3. 盐通常以可读的形式包含在生成的哈希字符串中。因此,通过存储哈希字符串,您还可以存储盐。查看此 answer 了解更多详情。

salt只包含在hash中,比较时不需要记住

var myPlaintextPassword='Saifio';  
var saltRounds = 10;   
const hash = bcrypt.hashSync(myPlaintextPassword, saltRounds);


b$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa

| | | | | | | hash-value = K0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa | | | | |盐 = nOUIs5kJ7naTuTFkBy1veu | | | cost-factor = 10 = 2^10 次迭代 | hash-algorithm = 2b = BCrypt