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

Go语言AWS4-HMAC-SHA256签名生成问题:kSigningSum异常求助

问题诊断与修复

核心错误:签名密钥生成最后一步参数完全颠倒

你在生成kSigningSum的最后一步,把HMAC的密钥和输入值搞反了。AWS要求的最后一步是:用前一步生成的kServiceSum作为密钥,对字符串"aws4_request"执行HMAC-SHA256计算,而你的代码正好反过来了。

错误代码片段

// 错误:把"aws4_request"作为密钥,kServiceSum作为输入
kSigning := hmac.New(sha256.New, []byte("aws4_request"))
kSigning.Write(kServiceSum)
kSigningSum := kSigning.Sum(nil)

修正后的代码

// 正确:用kServiceSum作为密钥,对"aws4_request"做HMAC
kSigning := hmac.New(sha256.New, kServiceSum)
kSigning.Write([]byte("aws4_request"))
kSigningSum := kSigning.Sum(nil)

额外注意点

  1. 你代码中signatureSumHexed只初始化了切片,但没有执行编码操作,需要补充:

    hex.Encode(signatureSumHexed, signatureSum)
    

    否则签名值会是空的,导致认证失败。

  2. 你注释里写的逻辑用的是"iam"作为服务名,但代码里用的是"execute-api"——如果你的stringToSign是正确的,那这里的服务名必须和stringToSign以及credentialScope中的服务名完全一致,这点要确保。

内容的提问来源于stack exchange,提问作者Caner Çetin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:20:32