为什么不需要盐来比较bcrypt中的密码是否正确?

Why isn't salt required to compare whether password is correct in bcrypt?

我想在将密码存储到数据库之前使用 node.js bcrypt 对密码进行哈希处理。

此 link 提供文档。 https://github.com/kelektiv/node.bcrypt.js

这里有一个哈希密码的例子。

var bcrypt = require('bcrypt');
const saltRounds = 10;
const myPlaintextPassword = 's0/\/\P4$$w0rD';

var salt = bcrypt.genSaltSync(saltRounds);
var hash = bcrypt.hashSync(myPlaintextPassword, salt);
// Store hash in your password DB.

这是检查密码的代码。

// Load hash from your password DB.
bcrypt.compareSync(myPlaintextPassword, hash); // true

这是我不明白的。 bcrypt.compareSync中为什么没有参数salt?既然hash是用salt生成的,为什么明文密码比对不涉及hash时用的原始salt?

salt 是 bcrypt 存储在数据库中的字符串的一部分,例如参见 [​​=10=]

上的答案