我使用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,因为在取消注释该行之前我没有在控制台中得到任何东西。
有人有同样的问题吗?提前谢谢。
答案 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");
});