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

Java解密OpenSSL加密的AES-256-CBC数据遇填充错误,该如何解决?

AES-CBC解密出现BadPaddingException的原因与解决

问题出在你第二步加密时的OpenSSL参数使用错误:

  • 你用了小写的-k参数,但这个参数是用来传入明文密码的,OpenSSL会对这个密码做哈希处理(结合盐和指定的摘要算法)来生成密钥。你输入的十六进制密钥字符串会被当成普通明文密码处理,导致实际加密用的密钥和第一步生成的、Java代码里用的密钥完全不一致,自然解密时就会抛出填充错误。
  • 正确的做法是用大写的-K参数,这个参数是用来直接指定十六进制格式的密钥的,不会对输入值做额外哈希处理,这样加密时用的密钥就和你第一步生成的密钥完全匹配了。

修正后的加密命令:

openssl enc -aes-256-cbc -K E640008145BBB4B8DEF141BBF20301C2017D3DB7ABE56DEBCF95D412B03B61F2 -iv 868CB4028A265D33B0EAE131EF72F3AB -base64 <<< hashingpassword

你的Java代码是正确的:它正确解析了十六进制的密钥和IV,使用的AES/CBC/PKCS5Padding和OpenSSLenc命令的默认填充规则一致,只要加密命令修正后,解密就能正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:06:21