nodejs scrypt崩溃没有错误

时间:2014-07-31 01:32:25

标签: 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,因为在取消注释该行之前我没有在控制台中得到任何东西。

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

1 个答案:

答案 0 :(得分:1)

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

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