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

PHP中如何实现符合Cryptii的HMAC SHA-1十六进制编码?

问题分析与解决

你的代码存在两个核心问题,导致和Cryptii的结果不一致:

  • 消息未转二进制:Cryptii中是将输入的十六进制字符串002590cd26da解码为二进制数据后再计算HMAC,但你的代码直接用该字符串作为消息参数,相当于用字符串的ASCII值参与计算,和预期的二进制输入不符。
  • 密钥处理不统一:第一次调用hash_hmac时直接使用十六进制字符串作为密钥,没有转成二进制;第二次虽然转了密钥,但消息没处理,仍然不符合要求。

修正后的代码

<?php
// 将十六进制格式的消息和密钥转换为二进制数据
$message = pack("H*", "002590cd26da");
$key = pack("H*", "8544e3b47eca58f9583043f8");

// 计算HMAC-SHA1,返回十六进制格式的结果
$hmacResult = hash_hmac("sha1", $message, $key);
echo $hmacResult;
?>

关键说明

  • pack("H*", $hexStr):这个函数会把十六进制字符串转换为对应的二进制字节流,这一步是匹配Cryptii处理逻辑的核心——Cryptii的输入框默认会把十六进制文本解码为二进制数据参与HMAC计算。
  • hash_hmac的第三个参数默认返回十六进制字符串,和Cryptii的输出格式一致,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:40:02