2016-06-16 6 views
1

このノードコードスニペットは、ノードプラットフォームのバージョンに基づいて異なる値を返します。 Ubuntu 14.04を実行するEC2には、2つの同一インスタンス(ノードバージョンを除く)があります。ノードv0.8.28Node.js暗号化PBKDF2関数はv8とv10の値が異なる戻り値

"use strict"; 
var crypto = require("crypto"); 
crypto.pbkdf2("password", "salt", 1000, 32, function(err, derivedKey) { 
if (err) { 
console.error(err); 
} else { 
console.log(new Buffer(derivedKey).toString('base64')); 
} 
});  

コンソール値:

bsKIwr7Ci8KtfsKuwp3CnhDCqgYSJANPw61Iw5A/w4vCrcKWwotWAGfChFPCnVIU

ノードv0.10.5の値がある:

BOI + I61 + rp2eEKoGEiQDT + 1I0D/LrZaLVgBnhFOdUhQ =

Thアプリケーション上のノードバージョンをアップグレードしており、パスワードを正しく復号化できないため、大きな問題です。

ありがとうございます!

答えて

3

あなたが助けを求めた後に答えを見つけるのは変です。このようにバッファ機能へのエンコードタイプを渡すことによって

console.log(new Buffer(derivedKey,'binary').toString('base64')); 

...私は同じハッシュを得ることができます。

console snippets

は、今では指定する必要があり、デフォルトのタイプはUTF8にバイナリから変更されたので、「バイナリ」が判明しました。 https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback(下の注を参照)