Мне нужно скопировать код .NET в Node.js. Мое жесткое требование состоит в том, что шифрование Triple DES должно выполняться с 16-байтовым ключом и 16-байтовым IV.
Тем не менее, я искал все, но не смог найти эту комбинацию ни с одним пакетом Node.js.
Следующий код жалуется, что длина IV должна быть 8 байтов. И это работает, если я сделаю это 8 байтов.
const crypto = require('crypto');
const text = "4111111111111111";
const des_key = Buffer.from([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);
const des_iv = Buffer.from([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]);
const cipher = crypto.createCipheriv("DES-EDE-CBC", des_key, des_iv);
const encryptedText = cipher.update(text,'utf8','base64') + cipher.final('base64');
console.log("EncryptedText: " + encryptedText);
Я попробовал другие алгоритмы, но не смог найти нужные комбинации длин. Смотрите мои выводы ниже.
DES-ECB - Key: 8; IV: 0
DES-CBC - Key: 8; IV: 8
DES-CFB - Key: 8; IV: 8
DES-CFB1 - Key: 8; IV: 8
DES-CFB8 - Key: 8; IV: 8
DES-EDE-CBC - Key: 16; IV: 8
DES-EDE-CFB - Key: 16; IV: 8
DES-EDE-OFB - Key: 16; IV: 8
DES-EDE3-CBC - Key: 24; IV: 8
DESX-CBC - Key: 24; IV: 8
Буду очень признателен за любую помощь, которую я могу получить.