我正在尝试为我正在制作的节点应用程序配置Bcrypt,并且有几个关于盐的问题,我希望有人可以帮助我们回答 .
-
什么是盐'round'?例如,在github docs(https://github.com/kelektiv/node.bcrypt.js/)中,它使用了一轮10的盐 . 这究竟是什么意思?
-
Bcrypt生成的盐总是一样吗?例如,如果我将用户的散列密码保存到数据库,那么它用于散列密码的盐是否与每个密码相同?
-
如何储存盐?是否可以抵御潜在的攻击?
我正在尝试为我正在制作的节点应用程序配置Bcrypt,并且有几个关于盐的问题,我希望有人可以帮助我们回答 .
什么是盐'round'?例如,在github docs(https://github.com/kelektiv/node.bcrypt.js/)中,它使用了一轮10的盐 . 这究竟是什么意思?
Bcrypt生成的盐总是一样吗?例如,如果我将用户的散列密码保存到数据库,那么它用于散列密码的盐是否与每个密码相同?
如何储存盐?是否可以抵御潜在的攻击?
1 回答
对于"salt round",它们实际上是指成本因素 . 成本因子控制计算单个BCrypt哈希所需的时间 . 成本因素越高,散列轮次就越多 . 将成本系数提高1可使所需时间增加一倍 . 需要的时间越多,蛮力就越难 .
salt是一个随机值,并且每次计算都应该不同,因此即使对于相同的密码,结果也应该几乎不相同 .
salt通常以可读的形式包含在生成的哈希字符串中 . 因此,通过存储哈希字符串,您还可以存储盐 . 有关详细信息,请查看此answer .