目录

解包规则


请求地址

管理后台创建软件后获取例:http://demo.huweidun.cn/ac.php?s=8508c320cacb0634c0e241df2f3345fe

公共提交参数

参数名 示例值 参数说明
sid
00362ace-e994-411a-a9bf-f31f9177b6f3
软件SID,后台添加软件后获得。
uuid d6fadd40-7267-4178-9b35-4c8ff61e0c07 封包安全码,每次必须变动,用于校验数据合法性方案之一。
t 1630766594 客户端10位时间戳。
m1 590b782aa78cc3333c84eaa975ab9dc1 封包token(sid+key+t 拼接后取MD5值)
m2 b1dfd79c7cf0f5df8f77c12352af952c 当前程序MD5值,如果开启校验MD5,则此值必填,可于程序运行时动态读取自身MD5值。
m3 f50ebce838ae4b8e212578dd0bc23d9f moduleMd5,购买授权后获得,如使用dll文件,请传入DLLMD5值,同时在”后台-系统-系统设置”中填写。
mcode b4f43bb8-32dc-4d9a-9094-74e39cd61c37 客户端机器码(自行获取机器码,若机器码变动则会提示转绑[如果开启”绑定机器码”])
clientid 36ebe72d-51d8-4252-b99c-37da152717ac 客户端运行ID,此ID在软件退出之前不可变动,也就是每次启动都生成一个新的clientid,软件退出即作废。
webkey 0241946994e62e289e4622b07154b961 通用秘钥(webKey),购买授权后获得。

公共返回参数

参数名 示例值 参数说明
status
success
success为正常,error为错误。
code 200 200为正常,其它为错误。
msg 账号或密码错误. 错误内容,无错误返回空。
token 324daaf6558361aa8f27d607c72262af 返回封包token(提交封包中的m1+返回封包中t,拼接后取MD5值)
t 1630766888 封包时间戳
uuid d6fadd40-7267-4178-9b35-4c8ff61e0c07 提交封包的UUID,原样返回。
result 请查看不同函数说明 数据主体,Json格式,每个函数返回的数据不同,具体请参照对应函数说明。
result_token 627b0d546ccb1d4896373305d74c6933 数据主体token,将数据以ASCII首字母递增排序,拼接键名与键值,拼接完毕后加上通信秘钥一起取MD5值。

传参说明

  • 只需按规则拼接参数后加密传送即可。

  • 封包内参数分为公共参数和函数参数。

  • 公共参数为所有命令均需要提交的参数。

  • 函数参数根据不同函数说明决定提交哪个参数,对应函数内均有说明。


解包规则

由于双向密文通信,所以当提交完成后,服务器返回的封包也是密文,需要解密。

1.取得密文与sign

  • 服务端将以JSON格式返回数据,例如:{"data":"密文","sign":"4f02110b7c0d64875d595e37910f899a"}

  • 提取出data以及sign值(服务端sign,用于后续数据校验).

2.计算sign并校验

  • sign值可保证数据在通信过程不被篡改,相当于给这段数据签名,客户端第一步应校验这段数据是否由服务器发出.
  • sign算法自定义:首先在管理后台编辑软件,其中的”服务端sign算法”即为自定义算法,[data]为密文原文,[key]为通讯秘钥.

  • sign算法计算:
    假设服务端sign算法为:[data]abc[key]123
    假设密文为:684e525171753936373748314a4c
    假设通信秘钥为:9d8af871e74f5629639544a314adab96
    套用最终数据
    684e525171753936373748314a4cabc9d8af871e74f5629639544a314adab96123
    则sign取其MD5值为:001a2eae67ae5862fe4cbebc25a8d870
    然后校验计算出来的sign是否与服务端返回的sign相同.

4.解密数据

  • 解密密码为通讯秘钥(共32字符),IV向量为通讯秘钥前16位(共16字符)

  • 例:通信秘钥为:9d8af871e74f5629639544a314adab96

  • 则:解密密码为:9d8af871e74f5629639544a314adab96,IV向量为:9d8af871e74f5629

  • PS.密文为HEX数据,部分语言可直接使用HEX密文解密,有些语言只能提交byte数组解密,此时需要先将密文由HEX转为byte即可.

5.UTF-8解码

  • 由于JSON明文内可能包含中文字符,直接下发到客户端可能产生中文乱码,所以所以服务端将文字编码设为UTF-8,以此保证数据不会再加解密过程中出现故障.解密完成后使用UTF-8解码,即可得到明文

  • 此时,将获得最终明文数据,明文依然是一组JSON数据,可参照不同函数说明获取不同值.

    {
      "status": "success",
      "code": "200",
      "uuid": "b7d9a8f1-29fb-40d5-a0e0-156a97a89845",
      "result": {
          "para": "{\"aaa\":\"111\",\"bbb\":\"222\"}"
      },
      "msg": "",
      "token": "f299fb3249ad02e011162708bd74be41",
      "t": 1581833440,
      "result_token": "b1f1bdf29ea91da175a8981eaed31e68"
    }
    

    解包流程图

解包流程图