Crypto JS: TripleDES неправильно шифрует

1

При использовании шифрования 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});

Ваша помощь будет очень оценена.

Теги:
encryption
cryptojs
tripledes

1 ответ

2
Лучший ответ

Глядя на зашифрованные данные, первые блоки соответствуют, а следующие два блока - нет.

    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'

  • 0
    Спасибо, это привело меня к решению

Ещё вопросы

Сообщество Overcoder
Наверх
Меню