1、签名算法生成步骤

步骤1:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
重要规则
1.参数名从小到大排序(字典序); 
2.如果参数的值为空不参与签名; 
3.参数名区分大小写; 
步骤2:在stringA最后拼接上AppSecret得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,得到sign值

签名举例:假设我们有以下数据
"timestemp""20200604140653904"
"deviceno""ae5a94eb3dbe9baf" 
"data""{"code":"569531"}" 

对参数按照key=value的格式,并按照参数名字典序排序如下:

stringA="data={"code":"569531"}&deviceno=ae5a94eb3dbe9baf&timestamp=20200604140653904&";

拼接AppSecret:

stringSignTemp=stringA+"key=8aec14f45612458f9685172ade12a7d6" //注:拼接参数key=appsecrte
即
data={"code":"569531"}&deviceno=ae5a94eb3dbe9baf&timestamp=20200604140653904&key=ae5a94eb3dbe9baf
sign=MD5(stringSignTemp)="7e951684b52a8a1c4a31b9170dc5d76d" //注:MD5签名方式

为了数据安全,我方对字段“data”进行AES加密处理,然后进行URL编码:

sJ3jgmoptllii1L%2bue4pr%2fhQ7GLtau%2baY1%2fXZ6BT1eY%3d

得到最终发送的数据:

{"deviceno":"ae5a94eb3dbe9baf","data":"sJ3jgmoptllii1L%2bue4pr%2fhQ7GLtau%2baY1%2fXZ6BT1eY%3d","timestamp":"20200604140653904","sign":"7e951684b52a8a1c4a31b9170dc5d76d"}

调用示例:
Request Data:
       {
           "deviceno":"ae5a94eb3dbe9baf",
           "data":"sJ3jgmoptllii1L%2bue4pr%2fhQ7GLtau%2baY1%2fXZ6BT1eY%3d", //data数据加密并URL编码处理,详情请看AES签名
           "timestamp":"20200604140653904"
           "sign":"7e951684b52a8a1c4a31b9170dc5d76d"// 先生成签名,再进行data数据AES加密
       }
Response Body:
      {
          "resultcode": "1", // 成功为1,失败为0
          "appid": "pm65b0195c12225a37", 
          "data": "", // data数据加密处理,详情请看AES加密 
          "msg": "创建成功"
      }

作者:ppt  创建时间:2024-10-29 19:16
最后编辑:ppt  更新时间:2024-10-30 10:52