node.js - nodejs scrypt 崩溃且没有错误

标签 node.js scrypt

我正在使用 nodejs 库 scrypt 来哈希我的密码。

scrypt.hash(new Buffer(data.password), scryptParameters, function(err, res) {
  console.log(res);
  //scrypt.verify(res, "incorrect password");
});

效果很好。但是,问题是当我取消注释该行以验证哈希时(为了简单起见,我将其放在同一个函数中(并且同步))

脚本直接崩溃了,没有任何错误!这就是我在控制台中得到的内容

/Users/foo/Documents/nodejs/wow/models/user.js:44
    scrypt.verify(res, "incorrect password");
           ^
[object Object]
31 Jul 10:26:52 - [nodemon] app crashed - waiting for file changes before starting...

而且它似乎正在尝试放入某种对象,即[object Object]。我没有console.log'ing它,因为在取消注释该行之前我在控制台中什么也没有得到。

有人遇到同样的问题吗?提前致谢。

最佳答案

问题是您使用了错误的 key encoding对于scrypt.verify()。默认情况下,它需要一个缓冲区,但您提供一个字符串。将“错误密码”更改为缓冲区或执行以下操作:

scrypt.hash(new Buffer(data.password), scryptParameters, function(err, res) {
  scrypt.verify.config.keyEncoding = "utf8";
  scrypt.verify(res, "incorrect password");
});

关于node.js - nodejs scrypt 崩溃且没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25049599/

相关文章:

node.js - Node js网络事件: connect vs connection

javascript - Nodejs/cheerio/x-ray 中的动态链接

node.js - 由于 Npm 安装崩溃,无法安装 Scrypt

javascript - 在使用 Dart 的浏览器中使用 scrypt 进行密码验证的适用性

java - Bouncy CaSTLe SCrypt 实现是否在结果中包含了这些因素?

node.js - npm 错误!写在结束之后。 RUN npm install 在 docker、aws 中失败

Javascript 回调函数 - Node.js

node.js - Nodejs Github api gist create - 接收Socket挂起

Python:无法从 hashlib 导入 scrypt