1. 获取SecretId和SecretKey
在控制台个人中心,申请SecretID和SecretKey

2. 签名计算方法
签名参数说明
| 名称 | 解释 |
|---|---|
| X-Tcaplus-secretid | 在控制台获取的SecretId,步骤1中获取到的SecretId |
| X-Tcaplus-timestamp | 当前UNIX时间戳(秒级),用于校验是否已过期 |
| X-Tcaplus-nonce | 20位以内随机数,用于校验请求是否已经发送过,每个请求只能发送一次。 |
| X-Tcaplus-signature | 请求签名,生成方法参考:签名过程 |
3. 签名过程
签名算法为HmacSHA256,签名数据为,秘钥是Secretkey,使用密钥对内容计算签名值。通过header发送到服务端
1、先拼接待签名字符串
# 签名数据
stringToSign =
X-Tcaplus-secretid + "\n" +
X-Tcaplus-timestamp + "\n" +
X-Tcaplus-nonce
2、计算签名
# 用HmacSHA256算法加密,返回16进制的内容
X-Tcaplus-signature =
HexEncode(HMAC_SHA256(SecretKey, stringToSign))
4. 签名计算代码示例
python
import time
import hmac
import hashlib
import random
secretID = "YOUR_SECRET_ID"
secretKey = "YOUR_SECRET_KEY"
t = time.time()
timestamp = str(int(t))
random_number = random.randint(100000, 999999)
nonce = f"{timestamp}-{random_number}"
stringToSign = "\n".join([secretID, timestamp, nonce])
signature = hmac.new(
secretKey.encode(), stringToSign.encode(), hashlib.sha256
).hexdigest()
print(signature)
go
package main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"fmt"
"math/rand"
"strconv"
"time"
)
func main() {
secretID := "YOUR_SECRET_ID"
secretKey := "YOUR_SECRET_KEY"
t := time.Now().Unix()
timestamp := strconv.FormatInt(t, 10)
randomNumber := rand.Intn(900000) + 100000
nonce := fmt.Sprintf("%s-%d", timestamp, randomNumber)
stringToSign := fmt.Sprintf("%s\n%s\n%s", secretID, timestamp, nonce)
key := []byte(secretKey)
h := hmac.New(sha256.New, key)
h.Write([]byte(stringToSign))
signature := hex.EncodeToString(h.Sum(nil))
fmt.Println(signature)
}
YOUR_SECRET_ID, YOUR_SECRET_KEY需要替换成对应的id和密钥
5. 每个请求均需在header设置这些参数
| 名称 | 解释 |
|---|---|
| X-Tcaplus-secretid | 在控制台获取的SecretId,步骤1中获取到的SecretId |
| X-Tcaplus-timestamp | 当前UNIX时间戳(秒级),用于校验是否已过期 |
| X-Tcaplus-nonce | 20位以内随机数,用于校验请求是否已经发送过,每个请求只能发送一次。 |
| X-Tcaplus-signature | 请求签名,生成方法参考“3.签名过程” |