我在命令行中使用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操作系统。
答案 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
希望这有助于其他人。