2017-10-06 13 views
1

私はいくつかのピンコード/パスワードハッシュのためのユニットテストを作成しようとしています。私はこのエラーを早くも見つけ出しましたが、単純な.toString()で解決できましたが、今はうまくいかないようです。Cryptographer TypeError:最初の引数は文字列でなければなりません

これは方法に関連する私のコードの一部です:いけないinconsistant心配

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')); 
    }); 
    }); 
} 

pin.model.spec.js:

let pin = Math.floor(1000 + Math.random() * 9000); 
let hash = await Pincode.getHashedPincode(pin.toString(), salt); 

crypto.jsメソッド名の間には、getHashedPincodeというメソッドがありますが、それ以外は何もしませんが、命名規則のためだけにgetPasswordHashを呼び出します。 vars iterationskeyLengthは定数ファイルに由来します。だからそれは問題でもありません。

私は誰かが右方向に

EDIT私を導くことを願って:

これは全体getHashPincodeです:

Pincode.getHashedPincode = async (pincode, salt) => { 
    return cryptographer.getPasswordHash(pincode, salt); 
}; 
+1

私たちに 'getHashedPincode'を表示できますか? – taha

+0

私は投稿を編集しました – Bas

答えて

0

pin.toString()と間違って何もありませんが。エラーを引き起こしている何

あなたはエンコーディング()を指定したので、最初の引数()は文字列でなければなりません、new Buffer(salt, 'hex')です。 salt.toString()トリックを行う必要があります

+1

あなたは私のヒーローです、私は完全にそれを逃した。しかし、それは実際に動作するようです! – Bas