微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何比较 bcrypt 哈希密码

如何解决如何比较 bcrypt 哈希密码

我是 node js 的新手,我正在尝试验证加密的密码,并且我已经给出了我尝试过的以下代码

async function passCheck(event) {
  // in event i am passing user entered password and email
  var EnteredPassword = bcrypt.hashSync(event.password,10); //10 saltrounds

  var fromDB = await pool.query('SELECT password from User WHERE email  = ?',event.emailID);
  if (EnteredPassword == fromDB) {
    //Here i am comparing
    console.log('valid');
  } else {
    console.log('invalid');
  }
}

解决方法

bcrypt 具有用于比较哈希值的内置方法。

async function passCheck(event) {
  var fromDB = await pool.query('SELECT password from User WHERE email  = ? Limit 1',event.emailID);
  // --------------------------------------------------------------------------^
  // Added limit 1 to make sure the only one record will be returned.
  if (fromDB.length > 0 && await bcrypt.compare(event.password,fromDB[0].password)) {
    //Here i am comparing
    console.log('valid');
  } else {
    console.log('invalid');
  }
}

DB 结果集通常返回一个对象数组,因此,您应该检查是否有一些结果 (fromDB.length > 0),然后将散列字符串本身传递给 compare 方法。

,

试试这个

  const auth = await bcrypt.compare(EnteredPassword,fromDB)
if(auth ){    
   console.log("valid");
}
else{
   console.log("invalid")

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。