如何在命令行中使用openSSL来加密明文的HEX FILE或HEX表示?

时间:2018-06-03 18:42:13

标签: encryption openssl openssh php-openssl

我在命令行中使用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操作之前,此十六进制值用圆键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 :(得分:2)

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

答案 1 :(得分:1)

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

希望这有助于其他人。