nodejs - bcrypt:比较散列与密码总是 return 不匹配

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 db 上的加密密码进行比较

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");
            });
        })
    }

第二个函数的结果总是"not match"。

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

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

感谢您的帮助。

 query = "insert query with generated crypt password";

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

关于 bcrypt 比较的工作原理有一个有趣的question