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

PHP OpenSSL使用DES-ECB算法加密结果与在线工具不一致如何解决

问题根因及修复方案

你代码的问题集中在3个核心点,调整后即可得到匹配结果:

  • 算法选型错误:你提供的密钥为32位十六进制(对应16字节),属于双密钥3DES(三重DES)的密钥长度,单DES仅支持8字节密钥,所以要将算法从DES-ECB替换为DES-EDE3-ECB
  • 输入格式错误:在线工具的输入、密钥都是十六进制编码的字节序列,直接传入十六进制字符串会被当作普通ASCII文本处理,需要先通过hex2bin函数将十六进制字符串转为原始二进制字节
  • 输出格式错误:你当前用base64_encode输出加密结果,目标结果是十六进制格式,需要改用bin2hex输出

修复后可运行代码

// 十六进制格式的输入数据和密钥
$hexData = "F01DCCE40F8C365ADE0A7DC03BC11DDE";
$hexKey = "96187BBAB2BD19ACF899B74FB4E37972";

// 转为二进制原始字节
$data = hex2bin($hexData);
$key = hex2bin($hexKey);

// 使用3DES-ECB算法加密,无填充
$encrypted = openssl_encrypt($data, 'DES-EDE3-ECB', $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);

// 转为十六进制输出,和目标结果对齐
echo strtoupper(bin2hex($encrypted)); 
// 输出结果:355A627E977D8ECF4953C98D801E472F

注意

DES、3DES以及ECB模式本身安全性极低,以上方案仅用于旧系统兼容对接,新业务不建议使用该加密组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:04