При использовании шифрования js tripleDES для шифрования я заметил, что все строки для шифрования, которые имеют малую длину, например, "01", "111", "20", шифруются правильно, но с длинными строками типа "5000021234567890000", вывод неправильный или это не то значение, которое я ожидаю. Например, для этого "5000021234567890000", я ожидаю следующее: "HctDaKc/U9avOwZMSS5mEi62kfojDHA4", но вместо этого я получаю это: HctDaKc/U9bNnFy6eZHqHj3SemorJxQM.
Это код, который я нашел и использую для шифрования
let key = CryptoJS.MD5(enckey);
key.words[4] = key.words[0];
key.words[5] = key.words[1];
let iv = CryptoJS.lib.WordArray.create(64/8);
CryptoJS.TripleDES.encrypt("5000021234567890000", key, {iv: iv});
Ваша помощь будет очень оценена.
Глядя на зашифрованные данные, первые блоки соответствуют, а следующие два блока - нет.
HctDaKc/U9avOwZMSS5mEi62kfojDHA4 1DCB4368A73F53D6 AF3B064C492E6612 2EB691FA230C7038 HctDaKc/U9bNnFy6eZHqHj3SemorJxQM 1DCB4368A73F53D6 CD9C5CBA7991EA1E 3DD27A6A2B27140C
Предполагается, что IV - все 0x00 байт.
Это указывает, что один использует ECB m ode, а другой использует режим CBC.
См. Режим работы блока шифрования, в частности режимы ECB и CBC.
Режим ECB зашифровал каждый блок независимо, режим CBC xors предшествует блоку с зашифрованными данными и для первого блока IV. Поскольку IV - все значения 0x00, никаких изменений в первый блок не происходит.
Параметры могут быть указаны при создании шифрования, вам нужно увидеть страницу документации, удачи в этом.
Это будет выглядеть примерно так:
encryptor = crypto.createCipheriv( mode, key, iv)
где режим является одним из следующих: 'des-ede', 'des-ede-cbc', 'des-ede3', 'des-ede3-cbc', 'des3'