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

如何用PHP实现AES解密?已有Java解密代码求转换

解决AES CBC解密从Java转PHP的问题

你的PHP代码里有几个关键错误导致解密失败,我帮你梳理并修正:

问题分析

你的Java代码使用的是AES-128-CBC + PKCS5Padding,但PHP代码存在以下问题:

  • 错误使用hex2bin()处理密钥和IV:Java里是对Base64字符串解码,PHP应该对应使用base64_decode()
  • 密钥值写错:你用了X9Rgj55s7txnPAVJDlxTuA==,但Java里的正确密钥是r/RloSflFkLj3Pq2gFmdBQ==
  • 加密算法指定错误:Java里的密钥是16字节(128位),对应AES-128-CBC,你写成了AES-256-CBC

修正后的PHP代码

// 正确解码密钥(Base64格式,而非十六进制)
$key = base64_decode('r/RloSflFkLj3Pq2gFmdBQ==');
// 正确解码初始化向量IV
$iv = base64_decode('yzXzUhr3OAt1A47g7zmYxw==');
// 加密后的目标字符串
$encrypted = 'IKWpOq9rhTAz/K1ZR0znPA==';

// 使用匹配的AES-128-CBC算法,OPENSSL_RAW_DATA用于直接处理二进制数据
$output = openssl_decrypt($encrypted, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);

// 输出解密结果
echo $output;

补充说明

  • PKCS5Padding和PKCS7Padding在OpenSSL中是兼容的,所以不需要额外配置填充方式
  • 确保所有Base64字符串没有多余的空格或换行符,否则会导致解码失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:52:52