[英]nodejs - bcrypt: compare hash with password always return not match
我正在嘗試使用npm軟件包“ bcrypt”在我的PSQL數據庫上注冊並登錄用戶時插入加密密碼。
我所做的操作:
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比較如何工作存在一個有趣的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.