在中文站开放平台,url请求的多个参数都要参与签名(与文件上传有关的api中,文件字节流那个参数不参与签名),下面以两个参数为例,假设请求的url格式如下所示:
http://gw.open.1688.com/openapi/param2/1/system/currentTime/1000000?b=2&a=1(appKey=1000000,假设secretKey=test123)
参照签名算法说明,签名串s组装规则为:
1、 构造签名因子:urlPath。url 中的一部分,我们称之为urlPath,从协议(param2)开始截取,到“?”为止,urlPath=param2/1/system/currentTime/1000000
2、 构造签名因子:拼装的参数。参数 b=2&a=1 按照首字母排序,排序后为 a=1&b=2,然后去掉 =和& ,为a1b2
3、 合并两个签名因子。把前两步的字符串拼起来,得到s = param2/1/system/currentTime/1000000a1b2
4、 对合并后的签名因子执行hmac_sha1算法。 Signature=uppercase (hex (hmac_sha1 (s, secretKey)) 得到签名33E54F4F7B989E3E0E912D3FBD2F1A03CA7CCE88
——secretKey为签名密钥,与urlPath中的appKey(1000000)对应
——hmac_sha1为通用的hmac_sha1算法,各编程语言一般都对应类库
——hex为转为十六进制
——uppercase为转为大写字符
说明:API签名算法主要是使用urlPath和请求参数作为签名因子进行签名,主要针对api 调用
时间: 2024-10-09 23:27:35