我在命令行中使用 OpenSSL 使用 aes 加密来加密明文。
以下命令用于加密明文并生成密文。
openssl enc -aes-128-ecb -in plaintext_in_char.txt -out plaintext_in_char.txt.enc -K 5468617473206D79204B756E67204675
在上面的命令中,明文以字符格式给出, key 以十六进制格式给出。
cat plaintext_in_char.txt
Two One Nine Two
通过openSSL将plaintext_in_char.txt转换为以下十六进制
54776f204f6e65204e696e652054776f
在执行 aes 操作之前,该十六进制值与轮 key 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 操作系统。
最佳答案
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
关于encryption - 如何在命令行中使用 openSSL 加密十六进制文件或明文的十六进制表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669762/