首页 > 上网技巧 > 电脑小技巧 > 微信小程序对称解密代码中Mcrypt被PHP7.1废弃的...

微信小程序对称解密代码中Mcrypt被PHP7.1废弃的解决

时间:2017-12-30 16:09 作者:QQ地带 我要评论

一、问题
 
微信小程序开发的加解密demo代码中,使用了 Mcrypt ,而mcrypt在php7.1已经算是被废弃了。
 
二、解决
 
赶紧使用 openssl 吧
 
主要是在 Prpcrypt 这个类里面中使用的
 
1. 之前的代码:
 
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);
    } catch (Exception $e) {
    return array(ErrorCode::$IllegalBuffer, null);
    }
2. 修改之后的代码:
 
PS: 下面代码中,如果传过来的数据已经base64了,则不需要进行base64的操作
 
/**
     * 对密文进行解密
     * @param string $aesCipher 需要解密的密文
     * @param string $aesIV 解密的初始向量
     * @return string 解密得到的明文
     */
    public function decrypt( $aesCipher, $aesIV )
    {
        try {
            //解密
            $decrypted = openssl_decrypt(base64_decode($aesCipher), 'aes-128-cbc', base64_decode($this->key), OPENSSL_RAW_DATA, base64_decode($aesIV));
            // dump(($aesCipher));
            // dump(($this->key));
            // dump(($aesIV));
        } catch (\Exception $e) {
            return false;
        }
        try {
            //去除补位字符
            $pkc_encoder = new PKCS7Encoder;
            $result = $pkc_encoder->decode($decrypted);
        } catch (\Exception $e) {
            //print $e;
            return false;
        }
        return $result;
    }
三、注意
 
需要安装openssl扩展!!
 
不过一般都会装的!!

标签: 微信小程序
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告