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

PHP生成SHA256 HMAC哈希签名与Postman JS脚本结果不一致怎么解决

错误原因

你的PHP代码逻辑和Postman预请求脚本的运算逻辑不匹配,多执行了一次多余的SHA256哈希步骤:

  • Postman JS逻辑:直接对原始消息mymessage使用密钥myapipkey做HMAC-SHA256运算,直接输出结果
  • 你的PHP逻辑:先对原始消息mymessage做普通SHA256哈希得到哈希字符串,再对这个哈希字符串使用密钥做HMAC-SHA256运算,两次输入的运算内容完全不同,自然结果不一致

正确PHP实现

写法1:直接调用hash_hmac简写(推荐,代码更简洁)

<?php
$data_to_hash = "mymessage";
$key = "myapipkey";
$result = hash_hmac('sha256', $data_to_hash, $key);
echo $result;

写法2:使用hash_init流程(和你原有写法逻辑对齐的修正版)

<?php
$data_to_hash = "mymessage";
$key = "myapipkey";
// 直接初始化HMAC-SHA256上下文,不需要提前对原始消息做哈希
$ctx = hash_init('sha256', HASH_HMAC, $key);
hash_update($ctx, $data_to_hash);
$result = hash_final($ctx);
echo $result;

注意:如果实际使用中消息或密钥包含中文等非ASCII字符,需要确保PHP和JS两端的字符串编码一致(推荐统一使用UTF-8),否则也会出现签名不一致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:24:04