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

如何在Python中对字符串进行SHA1-HMAC加密(匹配PHP结果)

解决Python HMAC-SHA1与PHP命令输出不一致的问题

你的核心问题是没有正确将十六进制字符串转换为原始字节流,PHP命令里的处理逻辑和你的Python代码实现不匹配:

PHP命令的逻辑拆解

  • 消息:echo -n "0x00000000035362f9" | xxd -r -p —— xxd -r -p会忽略非十六进制字符(比如0x里的x),将剩余的十六进制字符串00000000035362f9解码为原始字节。
  • 密钥:-macopt hexkey:0080700040024c8581c2 —— 直接将该十六进制字符串解码为原始字节作为HMAC密钥。

错误的Python代码原因

你之前的代码把十六进制字符串当作普通UTF-8文本编码成字节(比如字符0被转成0x30),而非将十六进制字符串解码为对应原始字节(比如00转成0x00),导致字节内容完全不符。

正确的Python实现

from hmac import new
from hashlib import sha1

# 将密钥的十六进制字符串解码为原始字节
key_bytes = bytes.fromhex("0080700040024c8581c2")
# 将消息的十六进制字符串(去掉0x前缀)解码为原始字节
msg_bytes = bytes.fromhex("00000000035362f9")

# 计算HMAC-SHA1并输出十六进制结果
print(new(key_bytes, msg_bytes, sha1).hexdigest())

运行后会输出预期的结果:7289e7b135d54b86a462a53da93ef6ad28b902f8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:10:46