开发者社区> 问答> 正文

为什么我用PHP、python实现出来的HMAC-SHA1结果老是跟阿里云文档里面的不一样啊

已解决

我将里面  StringToSign的内容作为要计算HMAC-SHA1的字符串:
  1. POST&%2F&AccessKeyId%3Dtestid&AccountName%3D%253Ca%2525b%2527%253E&Action%3DSingleSendMail&AddressType%3D1&Format%3DXML&HtmlBody%3D4&RegionId%3Dcn-hangzhou&ReplyToAddress%3Dtrue&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3Dc1b2c332-4cfb-4a0f-b8cc-ebe622aa0a5c&SignatureVersion%3D1.0&Subject%3D3&TagName%3D2&Timestamp%3D2016-10-20T06%253A27%253A56Z&ToAddress%3D1%2540test.com&Version%3D2015-11-23
testsecret&作为key,用了php python等语言的方法,出来的结果是:
  1. jzViApckz3yWUgToj3MP4DACJVM=

但是文档的里的结果却是:
  1. llJfXJjBW3OacrVgxxsITgYaYm0=
我怀疑我的算法弄错了,于是就在 在线工具网站上测试,结果跟我用 php python等语言的方法一样。
求解为什么?怎样才能跟阿里云的结果一样?

展开
收起
1711903755737642 2018-09-18 09:55:09 3173 0
2 条回答
写回答
取消 提交回答
  • 采纳回答
    问题已解决。
    原因: 阿里云的文档的StringToSign写错了,该文档刚刚已经修改过来了

    浪费我那么多时间精力
    2018-09-20 15:43:29
    赞同 展开评论 打赏
  • 先学习一下URL编码的知识吧。在PHP中对应的函数是urlencode,解码是urldecode,%2F这样的内容是经过URL编码的特定字符,你在输入线上工具时不应该直接输%2F而应该输入/,得到的结果就可以跟阿里云中计算出来的一样。在PHP中用urldecode(你的原始内容)就能得到转码后的内容了。
    2018-09-20 08:11:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载