Javascript Bcrypt在Node.js中不一致地比较密码

Javascript Bcrypt在Node.js中不一致地比较密码,javascript,node.js,bcrypt,Javascript,Node.js,Bcrypt,我正在使用bcrypt比较两个不同程序中相同的明文密码和哈希,一个告诉我密码匹配,另一个说密码不匹配 在问题文件中: passport.use(new LocalStrategy(function(username,plainTextPassword,done) { process.nextTick(() => { db.query('SELECT * FROM users WHERE username = ?',[username],(err,rows) => {

我正在使用bcrypt比较两个不同程序中相同的明文密码和哈希,一个告诉我密码匹配,另一个说密码不匹配

在问题文件中:

passport.use(new LocalStrategy(function(username,plainTextPassword,done) {
  process.nextTick(() => {
    db.query('SELECT * FROM users WHERE username = ?',[username],(err,rows) => {
      if (err) return done(err);
      if (!rows[0]) return done(null,false);

      let hash = rows[0].password;
      let user = rows[0];
      bcrypt.compare(plainTextPassword, hash, (err, res) => {
        console.log(plainTextPassword);      // test
        console.log(hash);                   // $2b$10$EefqCwYTMHDDtIGH.SIHIu.BPCOiT7Bp4Zzej5iUoxlKtMZ67oHtC
        console.log(res);                    // false
        if (!res) return done(null,false);
        return done(null,rows[0]);
      });
    });
  });
}));
我正在复制明文密码和哈希的记录值,并将它们粘贴到以下代码中:

const bcrypt = require('bcrypt');
const saltRounds = 10;
bcrypt.compare('test', '$2b$10$EefqCwYTMHDDtIGH.SIHIu.BPCOiT7Bp4Zzej5iUoxlKtMZ67oHtC', (err,same) => {
  console.log(same);    // true
}
这将返回true,而不是像第一个代码块返回的
console.log(res)
那样返回false。第一个代码块已经很好地检查了大多数密码,但这一个似乎不同。没有特殊字符,明文密码为“test”,散列存储在mysql数据库的VARCHAR(150)中。

请参见[](:“cost参数指定密钥扩展迭代计数为2的幂,这是加密算法的输入”

$10$指定成本参数10,表示2^10个关键扩展回合


当然,代码行:
const salthards=10;
未使用,请删除死代码。

无特殊字符
编码等如何?纯纯纯文本?您忽略了bcrypt回调中的错误?如果有必要,它将使用
utf8-默认排序规则存储在数据库中。不确定如何正确回答您的问题问题不是说我在用VSCode编写的脚本中对文本进行了散列,从bash复制了散列,并将散列输入数据库。现在,当我查询登录端点时,bcrypt函数失败@TheIncorrigible1@Bergi
err
对象只记录为
undefined
您使用的是什么节点和Bcrypt版本?可以吗u检查:
hash.trim().length==hash.length