签名算法
数据假设
在生成 API 请求中的签名(Signature) 时,需要提供账户中密钥,包括 PublicKey 和 PrivateKey,
密钥可以从 控制台  获取。
本例中假设
PublicKey  = 'someone@example.com1296235120854146120'
PrivateKey = '46f09bb9fab4f12dfc160dae12273d5332b5debe'💡 你可以使用上述的
PublicKey和PrivateKey调试你的代码, 当得到跟后面一致的签名结果后(即表示你的代码是正确的),可再换为你自己的PublicKey和PrivateKey以及其他 API 请求。
本例中假设用户请求参数串如下:
{
    "Action"     :  "DescribeUHostInstance",
    "Region"     :  "cn-bj2",
    "Limit"      :  10,
    "PublicKey"  :  "someone@example.com1296235120854146120"
}生成被签名串的 SHA1 签名,即是请求参数 Signature 的值。
按照上述算法,本例中,计算出的 Signature 为 4201919d267504385deb93af19e0197870fed36b 。
构造签名
1. 将请求参数按照名称进行升序排列
{
    "Action"     :  "DescribeUHostInstance",
    "Limit"      :  10,
    "PublicKey"  :  "someone@example.com1296235120854146120",
    "Region"     :  "cn-bj2"
}2. 构造被签名参数串
被签名串的构造规则为: 被签名串 = 所有请求参数拼接(无需 HTTP 转义)。并在本签名串的结尾拼接 API 密钥的私钥(PrivateKey)。
ActionDescribeUHostInstanceLimit10PublicKeysomeone@example.com1296235120854146120Regioncn-bj246f09bb9fab4f12dfc160dae12273d5332b5debe注意:
- 对于 bool 类型,应编码为 true/false
- 对于浮点数类型,如果小数部分为 0,应仅保留整数部分,如 42.0应保留42
- 对于浮点数类型,不能使用科学计数法
3. 计算签名
使用 SHA1 编码被签名串,生成最终签名。