Python3调用示例 本文为Python3调用示例 import hmac import base64 import hashlib import json import time import uuid import requests from urllib.parse import urlparse def sha256 (content): x hashlib.sha256() x.update(content.encode()) return x.hexdigest().upper() def hmacsha256 (key, content): sign hmac.new(key, content, digestmod"sha256").digest() ret base64.b64encode(sign) return ret 计算签名 def getsignature (ak, sk, appkey, params): 创建待签名字符串 一、header部分 主要包括3个header需要作为签名内容:appkey、ctyuneoprequestid、eopdate 1. 首先通过uuid生成ctyuneoprequestid requestid str(uuid.uuid1()) 2. 获取当前时间戳并对时间进行格式化 nowtime time.localtime() eopdate time.strftime("%Y%m%dT%H%M%SZ", nowtime) eopdatesimple time.strftime("%Y%m%d", nowtime) 3. 对header部分按照字母顺序进行排序并格式化 campheader "appkey:{0}nctyuneoprequestid:{1}neopdate:{2}n".format(appkey, requestid, eopdate) 二、query部分 对url的query部分进行排序 parsedurl urlparse(requesturl) query parsedurl.query queryparams sorted (query.split("&")) afterquery "" for queryparam in queryparams: if len (afterquery) < 1: afterquery + queryparam else: afterquery + "&" + queryparam 三、body参数进行sha256摘要 sha256 body contenthash sha256(json.dumps(params)).lower() 完成创建待签名字符串 presignature campheader + "n" + afterquery + "n" + contenthash 构造动态密钥 ktime hmacsha256(sk.encode("utf8"), eopdate.encode("utf8")) kak hmacsha256(base64.b64decode(ktime), ak.encode("utf8")) kdate hmacsha256(base64.b64decode(kak), eopdatesimple.encode("utf8"))