• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

问题描述

最近在开发微信小程序涉及到加密数据(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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
关于textBox长度控制的一点小程序发布时间:2022-07-18
下一篇:
小程序云函数异步返回结果简写发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap