nodejs-bcrypt:比较哈希和密码总是返回不匹配



在注册PSQL数据库并登录用户期间,我正试图使用npm包"bcrypt"插入加密密码。

我做的操作:

1( 注册:在我的PostgreSQL数据库上插入用户名和密码

createUser: function(username, password) {
bcrypt.genSalt(saltCount, function(err, salt) {
bcrypt.hash(password, salt, function(err, hash) {
query = "insert query with generated crypt password";
pool.query(query, (err, res) => {
console.log(err, res);
})
});
});
}

2( 登录用户:在PostgreSQL数据库上获取插入密码并与加密密码进行比较

login: function(username, password) {
const query = "select query for get crypt passowrd on db";
pool.query(query, (err, res) => {
const dbPsw = res.rows[0].hash_psw; // db password
bcrypt.compare(password, dbPsw, function(err, result) {
if (err)
console.log(err);
else if (result)
console.log("password match");
else
console.log("not match");
});
})
}

第二个函数的结果总是"不匹配"。

我在我的PSQL数据库中看到,第一个函数插入的密码总是不同的。事件我总是插入相同的密码进行加密。

所以我的问题是:我怎么能总是得到相同的加密密码?我可能做错了什么,但我遵循npm网站上的指南。

谢谢你的帮助。

query = "insert query with generated crypt password";

这应该是query = "insert query with generated hash",因为bcrypt.hash()给出了一个散列,如方法参数中所示:function(err, hash),因此此回调接收到错误或散列

有一个有趣的问题关于bcrypt比较如何工作

最新更新