为了账号安全,请及时绑定邮箱和手机立即绑定

AWS 请求身份验证:编码标头

AWS 请求身份验证:编码标头

Go
米琪卡哇伊 2021-06-02 14:43:10
我在 Google Go lang 中实现 AWS 请求身份验证package mainimport "fmt"import "crypto/hmac"import "crypto/sha256"import "time"import "encoding/base64"func main() {  AWSAccessKeyId := "MHAPUBLICKEY"  AWSSecretKeyId := "MHAPRIVATEKEY"  sha256         := sha256.New  time           := time.Now().UTC().Format(time.ANSIC)  hash           := hmac.New(sha256, []byte(AWSSecretKeyId))  hash.Write([]byte(time))  sha            := base64.URLEncoding.EncodeToString(hash.Sum(nil))  fmt.Println("Date", time)  fmt.Println("Content-Type","text/xml; charset=UTF-8")  fmt.Println("AWS3-HTTPS AWSAccessKeyId=" + AWSAccessKeyId + ",Algorithm=HmacSHA256,Signature=" + sha)}我从亚马逊获得有效输出,但仅当“sha”哈希不包含任何 _ 或 -在职的'WFKzWNQlZEyTC9JFGFyqdf8AYj54aBj5btxPIaGTDbM='不工作 HTTP/1.1 403 Forbidden SignatureDoesNotMatch'h-FIs7of_CJ7LusAoQPzSWVt9hlXF_5gCQgedn_85lk='如何对 AWS3-HTTPS 标头进行编码,使其在任何一种情况下都能正常工作?以防万一它是相关的,我目前正在将输出复制并粘贴到 cURL 中。一旦我让它可靠地工作,我计划在 Google Go 中实现请求。
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我原来需要从 URLEncoding 更改为 StdEncoding

sha = base64.URLEncoding.EncodeToString(hash.Sum(nil))

sha = base64.StdEncoding.EncodeToString(hash.Sum(nil))


查看完整回答
反对 回复 2021-06-07
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信