2017-11-10 13 views
0

私のnodejs 3DES暗号化が期待通りの結果を得られませんでした。私のコードに何か問題はありますか?3des暗号化が期待通りの結果を得られませんでした

let cryptojs = require('crypto-js') 
 
var key = '412B121B61C9782FCA6B983AF29862AA'; 
 
var message = '46574669849832145886804657466984'; 
 

 
key = cryptojs.enc.Hex.parse(key); 
 
message = cryptojs.enc.Hex.parse(message); 
 

 
var result = cryptojs.TripleDES.encrypt(message, key, {mode: cryptojs.mode.ECB, padding: cryptojs.pad.NoPadding}); 
 

 
console.log (result.key.toString()); 
 
console.log (result.ciphertext.toString()); 
 
console.log (result.toString());

出力は、しかし、期待

412b121b61c9782fca6b983af29862aa 
511e4f67d9dd0f840c4689348e2e7ce3 
UR5PZ9ndD4QMRok0ji584w== 

ある

2B4D7E0FE9672FEA5CDF60735B58D356 

答えて

0

トリプルDESキーである必要があり、ご想像の通り、DES鍵の3倍の長さ。使用しているキーは128ビットですが、予想されるキーサイズは192ビットです。

これは、3つの必須キーのうち2つ、 2ロットの64ビット、および3ロットの64ビットが欠落しています。

TripleDESの一部の実装では、64ビットの第1のロットを省略した場合、64ビットの第3のロットとして使用されます。 CryptoJSはこれをおこないません。それは、64ビットの3番目のロットを0に設定するだけです。結果は、3番目のキーとして最初のキーを使用する実装から来ているので、CryptoJSでこの動作をシミュレートする必要があります。

この問題を解決するには、キーの値を412B121B61C9782FCA6B983AF29862AA412B121B61C9782Fに変更します。

関連する問題