微信小程序服务器后端解密数据的算法


关键词

微信 小程序 服务器端 解密

摘要

本文介绍微信小程序后端解密数据的算法,用于解密手机号、用户信息、运动数据等。

微信小程序中可以获取手机号、用户信息、运动数据等信息,但通过接口获取的信息都是加密数据,放在一个叫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一致,如果一致则证明解密成功。

关于微信小程序服务器后端解密数据的算法,本文就介绍这么多,希望对大家有所帮助!

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权


如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« 微信小程序获取获取unionId的两种方法 小程序开发中如何拨打电话和拨打手机号码 »