使用HTTP消息体sign签名,签名规则如下:
第一步
设所有发送或者接收到的请求数据为集合M,将集合M内非空参数值的参数按照参数名从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。- 特别注意以下重要规则:
1.参数名从小到大排序(字典序);
2.如果参数的值为NULL则不参与签名;
3.参数名区分大小写;
4.验证调用返回或平台主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验;
5.平台接口可能增加字段,验证签名时必须支持增加的扩展字段;
6.data的值不进行排序。
- 特别注意以下重要规则:
第二步
在stringA最后拼接上appSecretKey得到stringSignTemp字符串。签名举例
签名秘钥为appSecretKey
假设传送的参数如下:
“appid”:”yme51ef06b32ac6cf1”,
“data”:”{“account”:”135357884555”,”timestamp”:”1725873171”,”type”:0}”1:对参数按照key=value的格式,并按照参数名字典序排序如下:
stringA=”appid=ymb8e0022f9ec6ea9f&data={“account”:”13535765899”,”timestamp”:”1726745067”,”type”:”0”}&”;
2:拼接密钥:
stringSignTamp=stringA+”e1f07aa0cb374b4e831228899972fcb1” //注:拼接参数 “密钥”即:
stringSignTamp=”appid=ymb8e0022f9ec6ea9f&data={“account”:”13535765899”,”timestamp”:”1726745067”,”type”:”0”}&e1f07aa0cb374b4e831228899972fcb1”;注意:在签名时字符串不可以有空格
第三步:对stringSignTemp进行标准MD5 32位运算,再将得到的字符串所有字符转换为大写,得到sign值:
最终得到签名
sign=MD5(stringSignTamp).toUpperCase()=”681BC4D9A64DC3C3DE7BC5DF59D59AE1” //注:MD5签名方式最后,得到最终发送的Json数据:
{ "appid": "ymb8e0022f9ec6ea9f", "sign": "681BC4D9A64DC3C3DE7BC5DF59D59AE1", "data": { "account": "13535765899", "timestamp": "1726745067", "type": "0" } }
最后编辑:郭祥西 更新时间:2024-11-07 15:18