php7.1以上版本 mcrypt拓展无法使用导致小程序登录数据无法解密

php7.1以上版本 mcrypt拓展无法使用导致小程序登录数据无法解密

修改两个文件即可1:WXBizDataCrypt.phppublic functiondecryptData( $encryptedData, $iv, &$data ) { if(strlen($this->sessionKey) != 24) { return ErrorCode::$IllegalAesKey; }$aesKey=base64_decode($this->sessionKey); if (strlen($iv) != 24) { returnErrorCode::$IllegalIv; } $aesIV=base64_decode($iv); //$aesCipher=base64_decode($encryptedData); $aesCipher=$encryptedData; $pc = newPrpcrypt($aesKey); $result = $pc->decrypt($aesCipher,$aesIV);var_dump($result); if ($result[0] != 0) { return $result[0]; }$dataObj=json_decode( $result[1] ); if( $dataObj == NULL ) { returnErrorCode::$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 解密的初始向量 * @returnstring 解密得到的明文 */ 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) { returnarray(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); }


猜你喜欢

转载自blog.csdn.net/assasin0308/article/details/80093834
今日推荐