Из (ограниченного) описания того, что вы делаете, можно выделить два недостатка.
Во-первых, веб-сайт, который вы используете, применяет заполнение при шифровании данных. Предоставленный вами открытый текст состоит из 48 байтов:
$ echo -n 'e679932d-12b2-48a2-8ef7-301cdb9ab57b289YH3ITIXRH' | wc -c
48
Это кратно 16. Но длина зашифрованного текста составляет 64 байта. Это можно увидеть, если base64 декодирует строку зашифрованного текста перед подачей ее в wc
:
$ echo -n 'AjL4iV8YSGnNOCQYOJXIP97GjCAYp2k0QLm56XxJN0p/yu5xQh5uitX3UmfP3bzZaXDd2u6hMwp6cxO3cNL1cg==' | openssl base64 -A -d | wc -c
64
Тот факт, что 16 байтов добавляются к зашифрованному тексту, даже если ваш открытый текст был кратен 16 байтам, означает, что применяется заполнение. Таким образом, в вашей команде openssl
вы не должны использовать параметр -nopad
.
Во-вторых, ваша команда openssl
предоставляет секретный ключ как парольную фразу, тогда как веб-сайт не интерпретирует поле ввода «Секретный ключ» как парольную фразу. Вместо использования -pass
в ваших openssl
командах вы должны использовать -K
, который дает ключ как фактическую последовательность байтовых значений.
Например, следующие openssl
команды могут быть успешно воспроизведены в форме веб-сайта:
$ echo -n '1234567890123456' | openssl enc -aes-128-ecb -K 6162636465666768696a6b6c6d6e6f70 -nosalt -base64 -A -out string.txt
$ cat string.txt
M3q3c85LGdEj9k8iep/J145kzoc/F027JCP82BRYDhU=
для шифрования и
$ cat string.txt | openssl enc -d -aes-128-ecb -K 6162636465666768696a6b6c6d6e6f70 -nosalt -base64 -A
1234567890123456
для расшифровки.
Для достижения тех же результатов на веб-сайте строка, которая будет использоваться в поле ввода открытого текста, - это 1234567890123456
, а строка, которая будет использоваться в поле ввода секретного ключа, - это abcdefghijklmnop
. Содержимое поля «AES Encrypted Output» будет таким же, как и содержимое string.txt
, и это то, что вам также нужно ввести в поле «text to be Decrypted».
(Флаг -n
для echo
и флаг -A
для openssl enc
используются, чтобы избежать добавления новой строки в конце).
person
Reinier Torenbeek
schedule
20.07.2018