使用openssl C API加密的文件无法通过命令行openssl解密

时间:2019-04-12 22:27:34

标签: encryption openssl

我正在使用AES 256 cbc加密。我可以使用openssl C API加密并成功解密文件。但是,当我尝试使用命令行解密通过C API加密的文件时,解密将提供错误的输出。 这是我正在使用的命令行:

openssl enc -d -aes-256-cbc -in ./input.bin -K "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff" -iv "00112233445566778899aabbccddeeff" -nopad > output.txt

我运行带有和不带有–nopad选项的命令。没有此选项,我将收到错误消息“数字信封例程:EVP_DecryptFinal_ex:错误解密”。 当我使用C API时,我使用的是相同的IV和密钥:

unsigned char key[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff,
                       0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };
unsigned char iv[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff };

命令行加密和C API加密是否兼容?或者我是否缺少命令行中的任何可选参数或C API中的设置,以使命令行和C API之间的加密/解密互操作? 感谢您的帮助。

编辑: input.bin包含以下数据(以十六进制形式发布在此处):

    02 d3 f8 94 e0 8c 82 ae e9 13 27 a7 e6 e3 b0 3d
24 2a ea 37 5a ff fe 1a fe ee 41 0d 81 54 fa 32

1 个答案:

答案 0 :(得分:1)

您的示例实际上是在ECB模式下加密的。.我只是使用在线工具解密了:

76 65 72 79 20 73 68 6f 72 74 31 32 33 34 35 36  very short123456
10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10