• 使用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