全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

签名机制

最近更新时间:2024-02-26 15:54:33

1.构造规范化请求字符串

第一步:请求参数排序

  • 请求参数包括公共参数和业务参数,不包含公共参数Signature。

  • 排序规则以参数名按照字典排序。

第二步:请求参数编码
使用UTF-8字符集按照RFC3986规则编码请求参数和参数取值,编码规则如下:

  • 对于字符A ~ Z、a ~ z、0 ~ 9以及字符-、_、.和~不编码。

  • 对于其他字符编码成%XY的格式,其中XY是字符对应ASCII码的16进制(大写)。

不同语言实现的URLEncode方式不同,为了得到RFC3986规则的编码,分别说明如下:

  • 如果您使用的是Java中的java.net.URLEncoder,可以先用URLEncoder.encode方法编码,随后将编码后的字符中加号(+)替换为%20、星号(*)替换为%2A、%7E替换为波浪号(~)即可;

  • 如果您使用的是golang中的net/url,可以用url.Values.Encode方法编码,随后将编码后的字符中加号(+)替换为%20即可;

  • 如果您使用的是php中的rawurlencode方法,不需要替换;

  • 如果您使用的是python3中的urllib.request,可以用urllib.request.quote方法,需要指定字符串中的波浪号(~)不编码,例如urllib.request.quote(str, ‘~’),str为待编码字符串;

第三步:请求参数拼接成CanonicalizedQueryString
每对URLEncode后的参数名称和参数值,用=进行连接。每对之间使用&进行连接。得到规范化请求字符串CanonicalizedQueryString。

2.计算签名

sign = hash_hmac(‘sha256’, CanonicalizedQueryString, sk)

sign值为签名算法返回的16进制格式小写字符串

签名样例:

5346bfebeb3f2162e2459e09a52b640584e5f1aa5012b15c6b85388680d4663e
计算签名时使用的sk为Accesskey对应的秘钥,使用的哈希算法是:HMAC-SHA256。

3.将签名值作为Signature参数值添加到请求参数中

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈