使用HTTP消息体sign签名,签名规则如下:
- 只使用data值进行签名
- 签名特别注意以下重要规则
1.参数名从小到大排序(字典序);
2.如果参数的值为NULL则不参与签名;
3.参数名区分大小写;
4.平台接口可能增加字段,验证签名时必须支持增加的扩展字段
签名举例
第一步
设所有发送或者接收到的请求数据为集合 M,将集合 M 内非空参数值的参数按照参数名从小到大(字典序)
排序,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串String A第二步
在String A 最后拼接上appSecret(即 key1=value1&key2=value2&…&key=appSecret ),得到stringSignTemp字符串假设appid与appSecret参数为:
appId = qqesdadawasddwaw1
appSecret = 123456789aaa假设传送data参数如下:
{ "deviceNo":"696db22f7a57e7f2111", "account":"12345678", "eventNo":"2024DE1726016101142207", "timeStamp":1726803917 }
1:对参数按照key=value的格式,并按照参数名字典序排序如下(在拼接之前需对每个value进行转码,转为UTF-8)
string A = account=12345678&deviceNo=696db22f7a57e7f2111&eventNo=2024DE1726016101142207&timeStamp=1726803917&
2:再拼接上key=appSecret
string stringSignTemp = account=12345678&deviceNo=696db22f7a57e7f2111&eventNo=2024DE1726016101142207&timeStamp=1726803917&key=123456789aaa
第三步
对stringSignTemp进行标准MD5 32位运算,得到sign值sign=MD5(stringSignTamp).toUpperCase()=”7C427163D878947E94D05DF7F30FD185” //注:MD5签名方式
得到最终发送数据
{ "data": { "deviceNo":"696db22f7a57e7f2111", "account":"12345678", "eventNo":"2024DE1726016101142207", "timeStamp":1726803917 }, "appId":"qqesdadawasddwaw1", "sign":"7C427163D878947E94D05DF7F30FD185" }
作者:李灵杰 创建时间:2024-09-03 09:24
最后编辑:郭祥西 更新时间:2024-11-07 15:18
最后编辑:郭祥西 更新时间:2024-11-07 15:18