关于哈希:什么是盐轮以及盐如何储存在Bcrypt中?

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

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

  • 什么是"圆形"的盐?例如,在Github文档(https://github.com/kelektiv/node.bcrypt.js/)中,它使用的是10的salt循环。这到底是什么意思?

  • BCRYPT产生的盐总是相同的吗?例如,如果我将用户的散列密码保存到数据库中,那么用于散列密码的salt对于每个密码都是相同的吗?

  • 盐是怎么储存的?它是否安全,不受潜在攻击?


  • "盐轮"实际上是指成本因素。成本因素控制计算单个bcrypt哈希所需的时间。成本因素越高,执行的散列循环越多。将成本因素增加1倍是所需时间的两倍。需要的时间越多,暴力强迫就越困难。
  • salt是一个随机值,每次计算的结果都应该不同,因此即使对于相同的密码,结果也不应该相同。
  • salt通常以可读的形式包含在生成的哈希字符串中。因此,通过存储哈希字符串,您还可以存储盐。请查看此答案以了解更多详细信息。