微信小程序中可以获取手机号、用户信息、运动数据等信息,但通过接口获取的信息都是加密数据,放在一个叫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 | 编辑:洪哥 | 分类:小程序 | 浏览: