所以我試圖爲一些pincode /密碼散列創建一個單元測試。我早先遇到過這個錯誤,但是後來我用一個簡單的.toString()
解決了這個問題,但現在看起來並不奏效。Cryptographer TypeError:第一個參數必須是一個字符串
這是我的一些代碼相關的方法:
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);
};
你能告訴我們'getHashedPincode'嗎? – taha
我編輯了這個職位 – Bas