node.js のアプリケーションのハッシュ アルゴリズムを、JS ベースのCryptoJS実装からノード独自の暗号実装に切り替えています。
これが私の実装です:
var password = "password1";
var salt = generateSalt();
var iterations = 4000;
var keySize = 768/32;
var cryptoJSKey = CryptoJS.PBKDF2(password, salt, { "iterations": iterations , "keySize": keySize });
// base64 encoded key
cryptoJSKey = cryptoJSKey.toString(CryptoJS.enc.Base64);
require("crypto").pbkdf2( password, salt, iterations, keySize, function(err, derivedKey){
var nodeCryptoKey = new Buffer( derivedKey, "binary" ).toString( "base64" );
console.log( cryptoJSKey == nodeCryptoKey ); // always false!
});
私が気づいたことの 1 つは、最終的nodeCryptoKey
に32
文字数になり、cryptoJSKey が192
. keySize
for only ノードのcrypto
バージョンを144
( )に増やすとkeySize * 6
、キーも192
文字数になりますが、それでも異なります。
私は何か間違ったことをしていますか、それとも実装が互いに異なるだけですか?