简体   繁体   English

如何比较 bcrypt hash 密码

[英]how to compare bcrypt hash password

I am new to node js, I am trying to validate a password that is encrypted, and I have given the below code which I have tried.我是节点 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 has a built-in method for comparing hashes. 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 result sets usually returns an array of objects, therefore, you should check that there are some results ( fromDB.length > 0 ) and then pass to the compare method the hashed string itself. DB 结果集通常返回一个对象数组,因此,您应该检查是否有一些结果( fromDB.length > 0 ),然后将哈希字符串本身传递给 compare 方法。

try this尝试这个

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

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM