簡體   English   中英

nodejs-bcrypt:比較哈希與密碼總是返回不匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM