所以我试图为某些pincode /密码哈希创建一个单元测试。我之前也遇到过这个错误,但后来我用一个简单的.toString()
解决了这个问题,但现在看起来并没有起作用。
这是我的一些与方法相关的代码:
pin.model.spec.js:
let pin = Math.floor(1000 + Math.random() * 9000);
let hash = await Pincode.getHashedPincode(pin.toString(), salt);
crypto.js:
function getPasswordHash(password, salt) {
return new Promise((resolve, reject) => {
crypto.pbkdf2(password, new Buffer(salt, 'hex'), iterations, keyLength, 'SHA1', (err, result) => {
if (err) {
return reject(err);
}
return resolve(result.toString('hex'));
});
});
}
不要担心不一致的方法名称,它们之间有一个名为getHashedPincode
的方法,除了命名约定外,它只会调用getPasswordHash
。变量iterations
和keyLength
来自常量文件。所以这也不是问题。
我希望有人能引导我走向正确的方向
编辑:
这是整个getHashPincode
:
Pincode.getHashedPincode = async (pincode, salt) => {
return cryptographer.getPasswordHash(pincode, salt);
};
答案 0 :(得分:0)
pin.toString()
没有任何问题。
导致错误的原因是new Buffer(salt, 'hex')
,因为您指定了编码( hex ),因此第一个参数( salt )必须是字符串。
salt.toString()
应该做的伎俩