在 bcrypt returns undefined 中比较两个相同的字符串散列
comparing two same string hashing in bcrypt returns undefined
我正在尝试散列两个相同的字符串并比较它们以验证密码是否正确。我在 nodeJS 中使用了 bcrypt
包。
当我使用 bcrypt.compare
方法时,它 returns 未定义!
这是我的代码:
var akbar, akbar2;
bcrypt.hash('salam', saltRounds, (err, hash) => {
akbar = hash;
console.log(akbar);
});
bcrypt.hash('salam', saltRounds, (err, hash) => {
akbar = hash;
});
bcrypt.compare(akbar, akbar2, (err, res) => {
console.log(akbar, akbar2, res);
});
控制台结果如下:
undefined undefined undefined
bdxYYYc2Ud3dVVeWU9GcOe6v9l8FT7GR5gNC6Pt0Xc1N.Si1R.EIC
因为 bcrypt.hash 是异步函数,当你比较它时 bcrypt.hash 可能还没有完成,因此它为 akbar 和 akbar2 打印未定义。您也无法比较 akbar 和 akbar2,因为它总是 return false。您应该只将 'salam' 与 akbar 或 'salam' 与 akbar2 进行比较。
bcrypt.hash('salam', 10, (err, hash) => {
const akbar = hash;
bcrypt.compare('salam', akbar, (err, isMatch) => {
console.log(isMatch);
});
});
散列和比较函数异步工作。
有哈希和比较的同步对应物:
var bcrypt = require('bcrypt');
const saltRounds = 10;
const myPlaintextPassword = 's0/\/\P4$$w0rD';
const someOtherPlaintextPassword = 'not_bacon';
var salt = bcrypt.genSaltSync(saltRounds);
var hash = bcrypt.hashSync(myPlaintextPassword, salt);
bcrypt.compareSync(myPlaintextPassword, hash); // true
始终推荐异步。
希望对您有所帮助
我正在尝试散列两个相同的字符串并比较它们以验证密码是否正确。我在 nodeJS 中使用了 bcrypt
包。
当我使用 bcrypt.compare
方法时,它 returns 未定义!
这是我的代码:
var akbar, akbar2;
bcrypt.hash('salam', saltRounds, (err, hash) => {
akbar = hash;
console.log(akbar);
});
bcrypt.hash('salam', saltRounds, (err, hash) => {
akbar = hash;
});
bcrypt.compare(akbar, akbar2, (err, res) => {
console.log(akbar, akbar2, res);
});
控制台结果如下:
undefined undefined undefined bdxYYYc2Ud3dVVeWU9GcOe6v9l8FT7GR5gNC6Pt0Xc1N.Si1R.EIC
因为 bcrypt.hash 是异步函数,当你比较它时 bcrypt.hash 可能还没有完成,因此它为 akbar 和 akbar2 打印未定义。您也无法比较 akbar 和 akbar2,因为它总是 return false。您应该只将 'salam' 与 akbar 或 'salam' 与 akbar2 进行比较。
bcrypt.hash('salam', 10, (err, hash) => {
const akbar = hash;
bcrypt.compare('salam', akbar, (err, isMatch) => {
console.log(isMatch);
});
});
散列和比较函数异步工作。
有哈希和比较的同步对应物:
var bcrypt = require('bcrypt');
const saltRounds = 10;
const myPlaintextPassword = 's0/\/\P4$$w0rD';
const someOtherPlaintextPassword = 'not_bacon';
var salt = bcrypt.genSaltSync(saltRounds);
var hash = bcrypt.hashSync(myPlaintextPassword, salt);
bcrypt.compareSync(myPlaintextPassword, hash); // true
始终推荐异步。
希望对您有所帮助