encryption - 使用 openssl C API 加密的文件无法通过命令行 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:bad decrypt”。当我使用 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
解决方案
您的示例实际上是在 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
推荐阅读
- r - 将字符串 2000 年 1 月 1 日上午 12:00 转换为 r 中的日期时间
- latex - Latex 缩进会为每个备用页面自动更改
- powerbi - Powerbi Desktop:如何在不选择每个项目的情况下进行过滤?
- javascript - 在数组中按特定顺序分配颜色
- javascript - 从 Array.prototype.indexOf.call 中排除某些元素
- java - Thymeleaf - 如何显示未包含在 th:text 中的文本
- wordpress - 如何创建简码以在页面部分显示 Custon Taxonomy 的术语及其图像?
- bash - 脚本在容器中失败,但奇异性返回 0(无错误)
- python - 将元组作为键的字典转换为 JSON
- haproxy - 使用设备检测在 macOS 上安装 HAProxy