解决PHP7中微信(小程序)mcrypt_module_open() 无法使用的解决方法
2022-07-28 15:20:24
256
{{single.collect_count}}

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](https://my.oschina.net/u/2303379) string $aesCipher 需要解密的密文 * [@param](https://my.oschina.net/u/2303379) string $aesIV 解密的初始向量 * [@return](https://my.oschina.net/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);}

 

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}