crypto js TDES конвертировать в OPENSSL - PullRequest
1 голос
/ 06 марта 2020

Я пишу этот код в nodejs для расшифровки 459508BB6B65C5A304D3EFB133038A14 с TripleDES:

C = require("crypto-js");
text = C.enc.Hex.parse("459508BB6B65C5A304D3EFB133038A14");
key = C.enc.Hex.parse("90033E3984CEF5A659C44BBB47299B4208374FB5DC495C96");
iv = C.enc.Hex.parse("E6B9AFA7A282A0CA");

var d = C.TripleDES.decrypt(
    {
        ciphertext: text
    }, 
        key,
    {
        iv: iv,
        mode: C.mode.CBC
    }
);
var r = d.toString(C.enc.Utf8);
console.log(r);

и теперь я хочу расшифровать это с OpenSSL в командной строке. я пробую эту команду, но она не работает:

echo -n 459508BB6B65C5A304D3EFB133038A14 | openssl enc -des3 -d -K 90033E3984CEF5A659C44BBB47299B4208374FB5DC495C96 -iv E6B9AFA7A282A0CA -nopad 

эта команда не работает и возвращает плохой расшифрованный текст

1 Ответ

2 голосов
/ 06 марта 2020

Вы забыли шестнадцатеричное декодирование самого зашифрованного текста, попробуйте:

echo -n 459508BB6B65C5A304D3EFB133038A14 | xxd -p -r | openssl enc -des3 -d -K 90033E3984CEF5A659C44BBB47299B4208374FB5DC495C96 -iv E6B9AFA7A282A0CA

Здесь xxd выполняет шестнадцатеричное декодирование, используя:

-p | -ps | -postscript | -plain
     output in postscript continuous hexdump style. Also known as plain hexdump style.
-r
     reverse operation: convert (or patch) hexdump into binary.

Затем он печатает 12 символов, включая пробел в конце:

1 0 6 4 0 3 

Обратите внимание, что я также удалил -nopad, так как он больше не требуется; crypto- js использует OpenSSL-совместимые отступы (ну, openssl-совместимые все действительно).

...