我正在尝试为我正在制作的节点应用程序配置 Bcrypt,并且有几个关于盐的问题,我希望这里有人可以帮助解答。
什么是盐“圆”?例如,在 github 文档 (https://github.com/kelektiv/node.bcrypt.js/) 中,它使用 10 轮的盐。这到底意味着什么?
Bcrypt 生成的盐总是一样吗?例如,如果我将用户的散列密码保存到数据库中,则用于散列密码的盐对于每个密码是否相同?
盐是如何储存的?它是否免受潜在攻击?
盐仅包含在哈希中,我们在比较时不需要记住。
var myPlaintextPassword='Saifio';
var saltRounds = 10;
const hash = bcrypt.hashSync(myPlaintextPassword, saltRounds);
$2b$10$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa
| | | |
| | | hash-value = K0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa
| | |
| | salt = nOUIs5kJ7naTuTFkBy1veu
| |
| cost-factor = 10 = 2^10 iterations
|
hash-algorithm = 2b = BCrypt