资讯专栏INFORMATION COLUMN

微信小程序加密数据(encryptedData)解密中的PHP代码,php7.1报错

zebrayoung / 2964人阅读

摘要:问题描述最近在开发微信小程序涉及到加密数据的解密用的是代码在运行后报错提示方法已过时了经研究得知是版本引起的可以使用方法代替解密首先要知道微信方使用的是加密的所以我们采用也应该对应对密文进行解密需要解密的密文解密的初始向量解密得到的明文

问题描述

最近在开发微信小程序涉及到加密数据(encryptedData)的解密,用的是PHP代码,在运行后报错mcrypt_module_ xxx is deprecated,提示方法已过时了


经研究得知,是php7.1版本引起的,可以使用openssl方法代替解密.

首先要知道微信方使用的是AES-128-CBC加密的:

​​

所以我们采用openssl也应该对应:

/**
     * 对密文进行解密
     * @param string $aesCipher 需要解密的密文
     * @param string $aesIV 解密的初始向量
     * @return string 解密得到的明文
     */
    public function decrypt( $aesCipher, $aesIV )
    {
 
        try {
            
//             $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, "", MCRYPT_MODE_CBC, "");
            
//             mcrypt_generic_init($module, $this->key, $aesIV);
 
//             //解密
//             $decrypted = mdecrypt_generic($module, $aesCipher);
//             mcrypt_generic_deinit($module);
//             mcrypt_module_close($module);
            
            $decrypted = openssl_decrypt($aesCipher, "aes-128-cbc", $this->key, OPENSSL_RAW_DATA ,$aesIV);
            
        } catch (Exception $e) {
            return array(ErrorCode::$IllegalBuffer, null);
        }
 
 
        try {
            //去除补位字符
            $pkc_encoder = new PKCS7Encoder;
            $result = $pkc_encoder->decode($decrypted);
 
        } catch (Exception $e) {
            //print $e;
            return array(ErrorCode::$IllegalBuffer, null);
        }
        return array(0, $result);
    }
    
    
特别注意

很多解密失败是因为在使用openssl_decrypt解密的时候又使用了一次base_decode,实际上微信demo在调用这个方法之前就已经把所有参数都base_decode了一次:

by KingFer

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29255.html

相关文章

  • 信小程序授权登录、解密unionId出错

    摘要:注没有在微信开放平台做开发者资质认证的就不要浪费时间了,没认证无法获取,认证费用元年,微信授权登录流程第一步获取用户临时登录凭证第二步获取加密过的数据和解密参数第三步把步骤一二中的传到开发者自己服务端第三步服务端获取到之后用方法请求如下微信 注:没有在微信开放平台做开发者资质认证的就不要浪费时间了,没认证无法获取unionId,认证费用300元/年,emmmm.... 微信授权登录流程...

    tinysun1234 评论0 收藏0
  • PHP实现信小程序用户授权的工具类

    摘要:事先准备工作申请一个小程序,申请地址传送门仔细阅读小程序的用户授权登陆官方文档用户授权登陆的流程仔细阅读微信用户数据解密的相关文档用户数据解密说明文档在小程序后台配置好相应的后端请求地址,路径是开发开发设置,如图小程序如果需要做多个 事先准备工作 1.申请一个小程序,申请地址:传送门 2.仔细阅读小程序的用户授权登陆官方文档:《用户授权登陆的流程》 3.仔细阅读微信用户数据解密的相关文...

    seanHai 评论0 收藏0
  • 信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)

    摘要:文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号好好学,获取优质学习资源。一登录流程图二小程序客户端获取用户信息非必填默认为请求服务端的登录接口临时登录凭证用户非敏感信息签名用户敏感信息解密算法的向量调用服务端登录接口 文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、登录流程图 showImg(htt...

    QiShare 评论0 收藏0
  • 信小程序开发:python+sanic 实现小程序登录注册

    摘要:参考链接微信小程序七日谈第五天你可能要在登录功能上花费大力气理解认证及实践网站微信登录实现最后,感谢女朋友支持。 开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步。这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案。 微信小程序登录时序图如下: showImg(https://segmentfaul...

    antz 评论0 收藏0
  • 信小程序开发:python+sanic 实现小程序登录注册

    摘要:参考链接微信小程序七日谈第五天你可能要在登录功能上花费大力气理解认证及实践网站微信登录实现最后,感谢女朋友支持。 开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步。这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案。 微信小程序登录时序图如下: showImg(https://segmentfaul...

    Nino 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<