|

100精币
[Python] 纯文本查看 复制代码 import base64
import hmac
import time
from urllib.parse import quote
def token(id,access_key):
version = '2018-10-31'
res = 'products/%s' % id # 通过产品ID访问产品API
# 用户自定义token过期时间
et = '1727254359'
# 签名方法,支持md5、sha1、sha256
method = 'sha1'
# 对access_key进行decode
key = base64.b64decode(access_key)
# 计算sign
org = et + '\n' + method + '\n' + res + '\n' + version
sign_b = hmac.new(key=key, msg=org.encode(), digestmod=method)
sign = base64.b64encode(sign_b.digest()).decode()
# value 部分进行url编码,method/res/version值较为简单无需编码
#sign = quote(sign, safe='')
res = quote(res, safe='')
# token参数拼接
token = 'version=%s&res=%s&et=%s&method=%s&sign=%s' % (version, res, et, method, sign)
return sign
if __name__ == '__main__':
id = '123123'
access_key = 'KuF3NT/jUBJ62LNBB/A8XZA9CqS3Cu79B/ABmfA1UCw='
print(token(id,access_key))
|
组合Token | | | |
id | 文本型 | | | | access_key | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | version | 文本型 | | | res | 文本型 | | | et | 文本型 | | | key | 字节集 | | | method | 文本型 | | | org | 文本型 | | | sign_b | 文本型 | | | sign | 文本型 | | | token | 文本型 | | | HMAC | 加解密对象 | | |
version = “2018-10-31”res = “products/123123” et = 到文本 (到整数 (时间_到时间戳 (, 真, )) + 3600 )et = “1727254359”key = Base64解码 (access_key, , )method = “sha1” org = et + #换行符 + method + #换行符 + res + #换行符 + version 调试输出 (org )sign = HMAC. 取HMAC值 ( #哈希算法_SHA1, org, key, #文本内容类型_Base64 )调试输出 (sign ) sign = URL编码 (sign, )res = URL编码 (res, ) token = 创建文本 (“version={1}&res={2}&et={3}&method={4}&sign={5}”, version, res, et, method, sign )调试输出 (token )
大佬们 这段 PY 怎么翻译成 易语言呀?
我写的 始终 不对。。。
|
最佳答案
查看完整内容
"\n" 不等于易语言的换行符 易语言的换行符等于"\r\n" 改成字符(10)就行
|