You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenSSL 1.0.2o与1.1.0g AES-256-CBC解密兼容命令咨询

解决OpenSSL 1.0.2o与1.1.0g之间AES-256-CBC解密的兼容性问题

这确实是OpenSSL跨版本的典型行为差异,核心问题出在命令行参数的解析逻辑变化上:

为什么原命令在两个版本表现不同?

你原命令末尾的foobar是多余参数:

  • 在OpenSSL 1.0.2o中,当通过管道(|)提供输入时,程序会自动忽略后续的文件名参数,直接使用标准输入的密文完成解密,所以命令能正常执行。
  • 但从OpenSSL 1.1.0开始,enc子命令会严格解析所有参数,把foobar当作要读取的输入文件。如果这个文件不存在、内容为空,或者和管道输入的密文冲突,就会触发bad decrypt错误。

兼容两个版本的命令行

最简单的修复方式是去掉末尾多余的foobar参数,让程序明确使用管道输入的密文:

echo s+pQpLgAQKY6z9fNtBz63A== | openssl enc -a -d -aes-256-cbc -k a -nosalt

这个命令在1.0.2o和1.1.0g中都能正常执行,解密出正确内容。

如果必须保留foobar参数(比如遗留脚本)

如果你因为脚本兼容性等原因必须保留这个参数,可以通过-in -明确指定从标准输入读取密文,这样两个版本都会忽略后续的文件名参数:

echo s+pQpLgAQKY6z9fNtBz63A== | openssl enc -a -d -aes-256-cbc -k a -nosalt -in - foobar

针对OpenSSL 1.1.0g的单独调整

如果你只需要适配1.1.0g,除了上面的兼容方案,还可以直接删除多余的foobar参数;若你本意是让foobar作为输入文件,则改用重定向方式传递输入(这样逻辑更清晰,也符合新版本的参数规范):

openssl enc -a -d -aes-256-cbc -k a -nosalt < foobar

内容的提问来源于stack exchange,提问作者pts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:29:09