2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 解决PHP7中微信(小程序)mcrypt_module_open() 无法使用的解决方法

解决PHP7中微信(小程序)mcrypt_module_open() 无法使用的解决方法

时间:2024-04-08 19:31:59

相关推荐

解决PHP7中微信(小程序)mcrypt_module_open() 无法使用的解决方法

在PHP7 中 mcrypt_module_open()已经被 OPENSSL 取代.

当然你要是还是想用 mcrypt_module_open()就安装 mcrypt 扩展.

使用 openssl 代替 mcrypt:

WXBizDataCrypt.php

public 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;}

PKCS7Encoder.php

/*** 对密文进行解密* [@param](/u/2303379) string $aesCipher 需要解密的密文* [@param](/u/2303379) string $aesIV 解密的初始向量* [@return](/u/556800) 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);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。