微信小程序中可以获取手机号、用户信息、运动数据等信息,但通过接口获取的信息都是加密数据,放在一个叫encryptedData的字段里面。我们可以使用AES算法来对它进行解密。解密的密钥就是当前小程序登录的session_key,加密向量就是另一个字段:iv。
直接看一下服务器端的代码:
/**
* 解密AES
* 输入: sessionKey、encryptedData、iv
*/
private function wxDecryptData(){
$sessionKey = I('sessionKey');
$encryptedData = I('encryptedData');
$iv = I('iv');
//校验格式
if(strlen($sessionKey) != 24) {
$this->ajaxReturn(1, 'sessionKey 非法');
}
if(strlen($iv) != 24) {
$this->ajaxReturn(1, 'iv 非法');
}
//解密
$p1 = base64_decode($encryptedData);
$p2 = base64_decode($sessionKey);
$p3 = base64_decode($iv);
$result = openssl_decrypt($p1, "aes-128-cbc", $p2, 1, $p3);
$data = json_decode($result, true);
if( $data == NULL ){
$this->r(1, 'Aes 解密失败-1');
}
//解密后校验
$appid = z_get_config('wechat_mina_appid');
if( $data['watermark']['appid'] != $appid ){
$this->r(1, 'Aes 解密失败-2');
}
$this->r(0, '', $data);
}
上面先是校验了一下基本格式,然后对三个参数encryptedData、session_key、iv进行了base64_decode的处理。编码处理完后,就可以使用openssl_decrypt方法来进行解密了。解密出来会得到一个字符串,可以对它进行json_decode转成数组。然后还要校验一下,看看解密出来的appid,是否与当前小程序配置的appid一致,如果一致则证明解密成功。
关于微信小程序服务器后端解密数据的算法,本文就介绍这么多,希望对大家有所帮助!
要饭二维码
洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权
本文属于“洪哥笔记”原创文章,转载请注明来源地址:微信小程序服务器后端解密数据的算法:http://www.splaybow.com/post/xiaochengxu-server-decrypt-700.html
如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D!
发布时间:2021/1/1 7:18:42 | 编辑:洪哥 | 分类:小程序 | 浏览:



