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

CodeIgniter4中生成HexEncode(SHA-256(Body))签名出错排查

问题分析与修正方案

你的代码存在两个关键错误,导致生成的签名和API预期不符:

错误1:重复编码哈希结果

hash('sha256', $body) 函数默认返回的就是SHA256哈希的十六进制编码结果,完全符合规则里的HexEncode(Sha256(Body))要求。但你额外调用了bin2hex($hashbody),相当于把已经是十六进制的字符串再做一次二进制转十六进制编码,结果自然完全错误。

错误2:json_encode参数误用

json_encode的第二个参数应该是JSON选项常量(如JSON_UNESCAPED_UNICODE),你传入true会被解析为JSON_HEX_TAG等组合选项,可能导致生成的JSON格式(比如是否包含多余转义、空格)和API预期的不一致,进而影响哈希计算结果。API示例对应的正确JSON体是无空格的{"hello":"world"}。


正确实现代码

$datas = [
    'hello' => 'world',
];
// 生成标准无多余转义的JSON字符串
$body = json_encode($datas);
// 直接获取SHA256的十六进制编码结果,无需额外处理
$stringToSign = hash('sha256', $body);
// 输出结果:a47a5f14b3e78b5e3d3f81b1a1468499be964660f818c10adcac792c42709749
echo $stringToSign;

内容的提问来源于stack exchange,提问作者BИ Develop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:50:22