Основная проблема расшифровки AES

1

Я работаю над книгой Криптография и текущая проблема выглядит примерно так:

Используя существующую библиотеку криптографии, расшифруйте следующее   зашифрованный текст (в шестнадцатеричном виде):

539b333b39706d149028cfe1d9d4a407

со следующим 256-битным ключом (также в шестнадцатеричном виде):

8000000000000000000000000000000000000000000000000000000000000001

с помощью   AES.

Я немного озадачен здесь. Я использую OpenSSL, но использую -aes256 Параметр запрашивает IV, который явно не указан в этой задаче. Ввод всех нулей для IV дает плохую расшифровку. Попытки использовать некоторые другие методы шифрования AES не дали мне намного большего. Я могу быть здесь над головой, но просто пытаюсь понять, как все это работает ради развлечения. Я программист видеоигр, так что для меня это все ново. Любая помощь с этой проблемой учебника будет принята с благодарностью!

Примечание. Я провел исчерпывающее переполнение стеков и поиск в Google, но примерно через час ничего не добился.

Bennett Yeates
источник

Ответы:

3

Так как нет режим работы указан, и поскольку длина зашифрованного текста равна размеру одного блока шифрования AES (128 бит = 32 шестнадцатеричных числа = 16 байтов), вполне вероятно, что вы ожидаете использовать необработанный блочный шифр (a.k.a. «Режим ECB»).

Вы можете сделать это, используя openssl enc , Варианты, которые вам нужны -aes-256-ecb, который выберет шифр AES-256 в режиме ECB, и -nopad, который выключится заполнение сообщения . *

Конечно, вам также нужно сначала преобразовать зашифрованный текст из шестнадцатеричного кода в необработанные байты. (Вы можете использовать -K возможность поставить ключ непосредственно в шестнадцатеричном виде.) не быть печатным ASCII, но преобразование его обратно в гекс должно выявить четкую картину.

*) На самом деле, ваш открытый текст делает случиться, чтобы закончиться в действительном PKCS # 7 отступы , так openssl с радостью расшифрует его даже без -nopad, Тем не менее, я предполагаю, что это просто совпадение.

Ilmari Karonen
источник
Интересно! Я попробовал метод ecb (хотя я забыл упомянуть об этом), но вывод казался обманчивым. Казалось бы, я пропустил этот шаг преобразования его обратно в гекс. Каков предпочтительный способ сделать это?
Bennett Yeates
1
Любой инструмент, который вы использовали для преобразования шестнадцатеричного кода в необработанные байты, по-видимому, должен иметь возможность сделать и обратное. Или вы можете запустить выходной файл через шестнадцатеричный дамп инструмент как XXD ,
Ilmari Karonen
Казалось бы, я тоже пропустил этот шаг. Спасибо за информацию!
Bennett Yeates
Интересно, если я все еще делаю это неправильно. Это моя команда: openssl.exe enc -d -aes-256-ecb -K 800000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 -in ../Excersizes/AES-decrypt-256bitkey/output.bin -out ../Excersizes/AES-decryplay56 .bin -nopad Без nopad я получаю "плохую расшифровку"
Bennett Yeates
1
Эта команда выглядит хорошо для меня. Сколько байт вашего файла зашифрованного текста? И если вы делаете шестнадцатеричный дамп, выглядит ли содержимое как шестнадцатеричная строка в упражнении?
Ilmari Karonen