MYRA Security API认证:HMAC-SHA256计算结果与示例不符求助
MYRA Security API认证Node.js实现错误排查
错误原因
你当前的代码输出错误,核心是HMAC计算的密钥与消息参数顺序完全颠倒。从你给出的错误输出反推,你实际运行的代码应该是将日期字符串作为HMAC密钥,把"MYRA"+secret作为待签名消息,这与官方要求的逻辑完全相反。
官方伪代码及Go实现的逻辑明确:
- 密钥:
"MYRA" + 你的API密钥(secret) - 待签名消息:符合ISO 8601格式的带时区时间戳字符串(如示例中的
2014-04-26T13:04:00+0100)
正确的Node.js代码
const crypto = require("crypto"); const secret = "6b3a71954faf11e4b898001517fa8424"; const date = "2014-04-26T13:04:00+0100"; const hmacKey = "MYRA" + secret; const dateKey = crypto.createHmac("sha256", hmacKey) .update(date, "utf8") .digest("hex"); console.log(dateKey); // 输出:1c2a270750de0cc1b8c3522494abd9a04e0b7801be6ece02755fa7bc9f8f5467
官方Go实现核心逻辑翻译
官方提供的Go语言签名流程核心步骤如下:
- 生成时间戳:构造符合ISO 8601标准的带时区时间字符串(格式示例:
YYYY-MM-DDTHH:mm:ss±HHMM) - 构造HMAC密钥:将固定前缀字符串
"MYRA"与用户的API密钥(secret)拼接 - 计算HMAC值:使用SHA256哈希算法,以拼接后的密钥对时间戳字符串进行HMAC计算
- 转换为十六进制:将HMAC计算结果转为十六进制字符串,最终得到用于API认证的
dateKey
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

