Skip to main content

附录

一、签名算法

签名将只对推送参数中的 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);