私はNodejsで3DS CBCの暗号化の結果をhttp://tripledes.online-domain-tools.com/に複製する必要があります。TripleDes CBC Nodejsの実装の問題
これは私のコードである:
const crypto = require('crypto');
const cipher = crypto.createCipher('des-ede3-cbc', key);
password = Buffer.from('MYPASS', 'utf8');
let encrypted = [cipher.update(password)];
encrypted.push(cipher.final());
encrypted = Buffer.concat(encryptedArr);
console.log(encrypted.toString('hex'));
tripledes.online-domain-tools.comの結果である:結果は59 30 20 02 A5であることが
注8c dd 5e、しかし私のコードは私に33 97 d8 b0 e3 00 d1 53.
私は何がありますか?
EDIT2: ご提案に続いて、私は(また、NISTの出版物の案内で作られたいくつかのテストを追加しました)私のコードを変更:
const crypto = require('crypto');
function encrypt (inputkey, keyformat, password, passwordformat) {
let shortkey = Buffer.from(inputkey, keyformat);
let key = Buffer.alloc(24);
key.fill('\0');
for (i = 0; i < shortkey.length; i++) {
key[i] = shortkey[i];
}
let IV = Buffer.alloc(8);
const cipher = crypto.createCipheriv('des-ede3-cbc', key, IV);
password = Buffer.from(password, passwordformat);
let encryptedArr = [cipher.update(password)];
encryptedArr.push(cipher.final());
encrypted = Buffer.concat(encryptedArr);
return encrypted;
}
console.log(encrypt('1046913489980131','hex','0000000000000000','hex')); // works
console.log(encrypt('1007103489988020','hex','0000000000000000','hex')); // works
console.log(encrypt('10071034C8980120','hex','0000000000000000','hex')); // works
console.log(encrypt('1046103489988020','hex','0000000000000000','hex')); // works
console.log(encrypt('MYKEY','utf8','MYPASS','utf8')); // fails
NISTのすべてPermutation Operation Known Answer Test
は素晴らしいが、他のいくつかの作品例(画像の1つを含む)が失敗するだけです
私のサービスプロバイダが参照として使用しているため、この日陰のページでテストしている理由があります。
でそれを確認することができ、あなたのコードの作業を実装したものです。 –
私の野生の推測..ウェブページには、キーが必要なキーの長さに合わせて延長され、キーのsha1の一部がIVとして使用されることが記載されています。あなたのコードはそれをしません – gusto2
私はそれを見落としました、私はそれを確認するつもりです –