Как использовать openSSL в командной строке для шифрования HEX FILE или HEX представления открытого текста? - PullRequest
0 голосов
/ 03 июня 2018

Я использую OpenSSL в командной строке для шифрования открытого текста с использованием шифрования aes.

Следующая команда используется для шифрования открытого текста и создает зашифрованный текст.

openssl enc  -aes-128-ecb -in plaintext_in_char.txt -out plaintext_in_char.txt.enc  -K 5468617473206D79204B756E67204675

В приведенной выше команде:открытый текст дается в символьном формате, а ключ - в шестнадцатеричном формате.

cat plaintext_in_char.txt
Two One Nine Two

plaintext_in_char.txt преобразуется в следующий гекс с помощью openSSL

54776f204f6e65204e696e652054776f

до выполнения операции aes и этого гексазначение ex-ИЛИ с круглым ключом 0.

В следующих файлах содержится шестнадцатеричное представление открытого текста

cat plaintext_hex_1.txt
54776f204f6e65204e696e652054776f

cat plaintext_hex_2.txt
0x54776f204f6e65204e696e652054776f


cat plaintext_hex_3.hex
54776f204f6e65204e696e652054776f

cat plaintext_hex_4.hex
0x54776f204f6e65204e696e652054776f

Я хочу передать шестнадцатеричное представление открытого текста в качестве ввода для шифрования.Однако, когда я пытаюсь использовать приведенные ниже команды, они не принимают ввод в качестве шестнадцатеричного ввода, они принимают их как отдельный символ и снова преобразуют в шестнадцатеричное значение перед выполнением начальной операции округления.

openssl enc  -aes-128-ecb -in plaintext_hex_1.txt -out plaintext_hex.txt.enc  -K 5468617473206D79204B756E67204675
openssl enc  -aes-128-ecb -in plaintext_hex_2.txt -out plaintext_hex.txt.enc  -K 5468617473206D79204B756E67204675
openssl enc  -aes-128-ecb -in plaintext_hex_3.hex -out plaintext_hex.txt.enc  -K 5468617473206D79204B756E67204675
openssl enc  -aes-128-ecb -in plaintext_hex_2.hex -out plaintext_hex.txt.enc  -K 5468617473206D79204B756E67204675

Будет очень полезно, если кто-нибудь поможет мне зашифровать шестнадцатеричное представление открытого текста входных данных для шифрования с использованием openSSL без дальнейшего преобразования в шестнадцатеричное значение (означает предотвращение шестнадцатеричного шестнадцатеричного значения).представление ввода).

Есть ли какой-либо другой формат, который мне нужен для сохранения шестнадцатеричного представления открытого текста, чтобы зашифровать его как шестнадцатеричный формат без дальнейшей конвертации шестнадцатеричного формата снова?

Я использую ОС Linux.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Подход Mnistic является правильным.Однако я получил один специальный символ в конце файла.

Здесь я нашел другую альтернативную команду (xxd) для преобразования шестнадцатеричного кода в двоичный (ascii).

cat plain-text_in_hex.txt | xxd -r -ps | openssl enc -aes-128-ecb -out plain_hex.txt.enc -K 5468617473206D79204B756E67204675

Команда xxd может использоваться для преобразования ascii в шестнадцатеричный код

cat plain-text_in_ascii.txt

Two One Nine Two

xxd -ps plain-text_in_ascii.txt 

54776f204f6e65204e696e652054776f    ----> this is hex representation

we can redirect to a file 

xxd -ps plain-text_in_ascii.txt  > plain-text_in_hex.txt


convert hex to ascii (reverse of previous ascii to hex operation)

xxd -r -ps plain-text_in_hex.txt

Надеюсь, это поможет другим.

0 голосов
/ 04 июня 2018

OpenSSL принимает входные данные только в двоичном формате (или, по желанию, base64).Однако если вы хотите сохранить входные данные в шестнадцатеричном виде, вы можете преобразовать их в двоичный, прежде чем отправлять их в openssl в виде одной строки, например:

cat plain_hex.txt | perl -e 'print pack "H*", <STDIN>' | openssl enc -aes-128-ecb -out plain_hex.txt.enc -K 5468617473206D79204B756E67204675
...