私は NodeJs にまったく慣れておらず、「crypto」モジュールの使用方法を理解しようとしています。それをいじっていると、NodeJs と crypto-js の「crypto」モジュールの違いに気付きました。
crypto-js を使用すると、次のことができます。
function SHA256Hash(password, salt, iteration) {
var saltedpassword = salt + password;
var sha256 = CryptoJS.algo.SHA256.create();
for(var i = 0; i < iteration; i++) {
alert("saltedpassword = " + saltedpassword);
sha256.update(saltedpassword);
var saltedpassword = sha256.finalize();
sha256.reset();
}
return saltedpassword.toString(CryptoJS.enc.Base64);
}
次に呼び出します:
var hashedPassword = SHA256Hash("123456789", "ASIN", 3)
そして受け取る:
saltedpassword = ASIN123456789
saltedpassword = 3362d80b757d14bfe18c01f6a003ed38a3a4a3dcab0417efb457b71740e21411
saltedpassword = 6020c992a9b7cd3ca9e95b9a3e21b64911edb7983b3dd77bdcecda19f2756987
「crypto」モジュールを使用して、次のように書きました。
function SHA256Hash(password, salt, iteration) {
var saltedpassword = salt + password;
for(var i = 0; i < iteration-1; i++) {
console.log("saltedpassword = "+saltedpassword)
var sha256 = crypto.createHash('sha256');
sha256.update(saltedpassword);
var saltedpassword = sha256.digest('hex');
}
console.log("saltedpassword = "+saltedpassword)
var sha256 = crypto.createHash('sha256');
sha256.update(saltedpassword);
return sha256.digest('base64');
}
次に呼び出します。
var hashedPassword = SHA256Hash("123456789", "ASIN", 3);
そして受け取ります:
saltedpassword = ASIN123456789
saltedpassword = 3362d80b757d14bfe18c01f6a003ed38a3a4a3dcab0417efb457b71740e21411
saltedpassword = 4795d40ae8ae797f0ce51dfe4b496bca68f6d1f4a264f4ca52348ddd65a2988d
最初の 2 つの項目は同じですが、3 番目の項目は異なります。私は何かを逃しましたか?
編集済み: Jasypt と比較すると、CryptoJs は同様のキーを生成します。私の質問は、「crypto」モジュールを調整して、CryptoJS や Jasypt と同じキーを生成する方法です。