微信小程序用户信息解密 php7

浏览:10176 发布日期:2017/05/23 分类:用法示例 关键字: 微信小程序 PHP7 mcrypt openssl
微信官方SDK在PHP7中提示:mcrypt_module_open() is deprecated,mcrypt已被OPENSSL代替
具体修改如下
1:WXBizDataCrypt.phppublic function decryptData( $encryptedData, $iv, &$data )
    {
        if (strlen($this->sessionKey) != 24) {
            return ErrorCode::$IllegalAesKey;
        }
        $aesKey=base64_decode($this->sessionKey);

        
        if (strlen($iv) != 24) {
            return ErrorCode::$IllegalIv;
        }
        $aesIV=base64_decode($iv);

        // $aesCipher=base64_decode($encryptedData);
        $aesCipher=$encryptedData;

        $pc = new Prpcrypt($aesKey);
        $result = $pc->decrypt($aesCipher,$aesIV);
        var_dump($result);
        if ($result[0] != 0) {
            return $result[0];
        }
     
        $dataObj=json_decode( $result[1] );
        if( $dataObj  == NULL )
        {
            return ErrorCode::$IllegalBuffer.'--';
        }
        if( $dataObj->watermark->appid != $this->appid )
        {
            return ErrorCode::$IllegalBuffer.';;';
        }
        $data = $result[1];
        return ErrorCode::$OK;
    }
2:PKCS7Encoder.php/**
     * 对密文进行解密
     * @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_ZERO_PADDING,$aesIV);
            // var_dump($decrypted);
        } 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);
    }
参考文章http://blog.csdn.net/sapperlab/article/details/56672443
评论( 相关
后面还有条评论,点击查看>>