跳转至

加解密说明

加密:

encryptMsg=Base64Encode(AESEncrypt[random(16B)+msgLen(4B)+msg+$AppID])
AES加密的buff由4部分组成:
1、 16个字节的随机字符串
2、 4个字节的msg长度
3、明文msg
4、$AppID。
其中msg_len为msg的字节数,网络字节序;$AppID为企业应用的AppID。
AES采用CBC模式,数据采用PKCS#7填充至32字节的倍数;IV初始向量大小为16字节。
经AESKey加密后,再进行Base64编码,即获得密文encryptMsg。

请求内容、回调应答中的业务数据(若需要)都需要经过加密放到encrypt,各接口中的数据格式对应到这里。

解密:

1、对密文BASE64解码:aesMsg=Base64Decode(encryptMsg)
2、使用企业应用回调设置中的EncodingAESKey做AES解密:randMsg=AESDecrypt(aesMsg)
3、验证解密后$AppID、msgLen
4、去掉randMsg头部的16个随机字节,4个字节的msg_len,和尾部的AppID即为最终的消息体原文msg

响应内容、回调内容中的业务数据(若存在)都经过加密存放到encrypt字段,各接口中的数据格式对应到这里。

消息体签名:

为了方便开发者验证回调的合法性,在回调url中增加了消息签名,以参数msg_signature标识,开发者可以先验证此参数的正确性后再解密。
验证步骤:
1.计算签名:dev_msg_signature=sha1(sort(token、timestamp、nonce、msg_encrypt))。sort是将参数按照字母字典排序,然后从小到大拼接成一个字符串
2.比较dev_msg_signature和msg_signature是否相等,相等则表示验证通过
参数 说明
token 后台管理器中设置应用回调时生成的token
timestamp 时间戳。有度服务回调参数中返回
nonce 随机字符串。有度服务回调参数中返回
msg_encrypt 加密的消息体。即回调json数据包中的encrypt节点值