附录
一、签名算法
签名将只对推送参数中的 data 进行签名,其他参数不做处理
第一步
首先将 data 参数通过 json 序列化转换成 string,如果 data 参数为加密后的 string 则,无需经过此步骤。以下为伪代码
$first = json_encode($data);
第二步
第二步,也是最后一步,得到签名值
$sign = md5($first + SECRET);
上面的 SECRET 为双方约定的秘钥,请勿泄露此秘钥
二、加密算法
推送参数支持数据加密,以防止数据泄露,具体加密算法如下
第一步
首先得到待加密的数据,将 data 参数通过 json 序列化转换成 string
$waitingEncrypt = json_encode($data);
第二步
通过 openssl 进行加密,且先保证您的应用有相关扩展
$encryptData = openssl_encrypt($waitingEncrypt, $method = 'AES-256-CFB', SECRET, $options = OPENSSL_RAW_DATA, $iv = {SECRET 前16位});
第三步
通过 base64 加密得到最终加密数据
$encrypt = base64_encode($encryptData);
三、解密算法
第一步
$waitingDecrypt = base64_decode($data);
第二步
$decryptData = openssl_decrypt($waitingEncrypt, $method = 'AES-256-CFB', SECRET, $options = OPENSSL_RAW_DATA, $iv = {SECRET 前16位});
第三步
通过 base64 加密得到最终加密数据
$decrypt = json_decode($decryptData);