我正在使用 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/