Signature algorithm
Data assumption
When generating the signature (Signature) in the API request, you need to provide the key in the account, including PublicKey and PrivateKey,
The key can be obtained from Console .
In this example it is assumed:
PublicKey = 'someone@example.com1296235120854146120'
PrivateKey = '46f09bb9fab4f12dfc160dae12273d5332b5debe'💡 You can use the above
PublicKeyandPrivateKeyto debug your code. When you get a consistent signature result (which means your code is correct), you can change it to your ownPublicKeyandPrivateKey` and other API requests.
In this example, it is assumed that the user request parameter string is as follows:
{
"Action" : "DescribeUHostInstance",
"Region" : "cn-bj2",
"Limit" : 10,
"PublicKey" : "someone@example.com1296235120854146120"
}Generate the SHA1 signature of the signed string, which is the value of the request parameter Signature.
According to the above algorithm, in this example, the calculated Signature is 4201919d267504385deb93af19e0197870fed36b.
Construct signature
1. Arrange request parameters in ascending order by name
{
"Action" : "DescribeUHostInstance",
"Limit" : 10,
"PublicKey" : "someone@example.com1296235120854146120",
"Region" : "cn-bj2"
}2. Construct the signed parameter string
The construction rules of the signed string are: signed string = concatenation of all request parameters (no HTTP escaping required). And splice the private key of the API key (PrivateKey) at the end of this signature string.
ActionDescribeUHostInstanceLimit10PublicKeysomeone@example.com1296235120854146120Regioncn-bj246f09bb9fab4f12dfc160dae12273d5332b5debeNotice:
- For bool types, should be encoded as
true/false - For floating point number types, if the fractional part is 0, only the integer part should be retained, such as
42.0should be retained as42 - For floating point types, scientific notation cannot be used
3. Calculate signature
Use SHA1 to encode the signed string to generate the final signature.