OpenSSL AES-CFB-128等效解密命令与Python代码适配问题问询
解密失败的核心原因
你遇到的问题既不是OpenSSL和Python加密逻辑不兼容,也不是key、iv参数填写错误,本质是CFB模式的分段尺寸配置不匹配。
- 你Python代码中显式指定了CFB模式的
segment_size = 128,也就是采用128bit(16字节整块)作为反馈单元的CFB128模式,每一次反馈都处理完整的AES块。 - 你调用的OpenSSL算法参数
-aes-128-cfb,在OpenSSL 1.1.1系列的实现里,不带分段后缀的这个算法名,默认对应的是CFB8模式(8bit分段,每次只处理1字节作为反馈单元),和你Python端的分段参数差了一个数量级,两边加密/解密的流生成逻辑完全错开,自然输出不了正确的明文。
可直接运行的正确解密命令
把原来命令里的算法名替换成显式指定128bit分段的标识即可,OpenSSL对CFB模式的命名规则是在算法名后标注分段bit数,CFB128对应的算法标识为aes-128-cfb128:
openssl.exe enc -d -aes-128-cfb128 -in config_enc.bin -out config.xml -K 3398699acebda0da -iv b39a46f5cc4f0d45
补充排查提示
- 你填写的key、iv hex值本身是正确的:你Python代码里传入的
b'3398699acebda0da'、b'b39a46f5cc4f0d45'都是16字节的ASCII字符串,逐字符转成十六进制,刚好和你命令里写的-K、-iv参数值完全一致,这部分没有格式错误。 - 不要额外添加OpenSSL默认的密码派生相关参数(比如加密码、salt、pbkdf2标识):你的Python代码是直接用固定key/iv做裸AES加解密,没有走OpenSSL默认的“输入密码派生key”的流程,你当前命令没加这类参数的写法是正确的。
- 注意区分同类CFB参数的差异:OpenSSL里的
aes-128-cfb1是1bit分段的CFB模式,aes-128-cfb默认是8bit分段,这两个都和你Python端的128bit分段配置不匹配,不能混用。
内容的提问来源于stack exchange,提问作者Tomay
相关产品推荐
相关产品推荐

