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.签名过程”

results matching ""

    No results matching ""