webAPI解包规则 - webAPI
公共提交参数,每个命令都需要提交以下公共参数
请求地址:管理后台-软件列表中获取对应软件API地址
请求类型:post
提交参数:data=URL编码后密文&sign=sign
参数名 参数说明
sid 软件SID,后台添加软件后获得
uuid 通用唯一识别码,每次必须变动,用于校验数据合法性方案之一.
t 客户端10位时间戳
m1 临时封包token(sid+key+t 拼接后取MD5值)
m2 当前程序MD5值,如果开启校验MD5,则此值必填,可于程序运行时动态读取自身MD5值.
m3 moduleMd5,购买授权后获得,如使用dll文件,请传入DLLMD5值,同时在"后台-系统-系统设置"中填写.
mcode 客户端机器码(自行获取机器码,若机器码变动则会提示转绑[如果开启"绑定机器码"])
clientid 客户端运行ID,此ID在软件退出之前不可变动,也就是每次启动都生成一个新的clientid,软件退出即作废.
webkey 通用秘钥(webKey),购买授权后获得.

公共返回参数,每个命令都按如下格式返回
参数名 参数说明
status success为正常 error为错误
code 200为正常,其它为错误,请参照错误码表
msg 错误内容明文,请参照错误码表
token 返回封包token(提交封包中的m1+返回封包中t,拼接后取MD5值)
t 封包时间
uuid 提交封包的UUID
result 数据主体,每个函数返回的数据不同,具体请参照对应函数说明.
result_token 数据主体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

    那么,"服务端sing算法"中套用最终数据

    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数据,可参照不同函数说明获取不同值.  


流程图:


Copyright © 2019-2059 HuWeiDun.Cn All rights reserved.
登记号2019SR0828127 软著登字第4248884号 商标注册号40431690
冀ICP备19021017号 冀公网安备 13108202000638号