php7.1以上版本 mcrypt拓展无法使用导致小程序登录数据无法解密
2017-08-23 15:26
701 查看
修改两个文件即可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); }
} $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); }
相关文章推荐
- php7.0以上版本 mcrypt拓展无法使用导致小程序登录数据无法解密
- PHP使用mcrypt进行AES加密后的数据NodeJS等无法解密的问题修复方案
- 解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
- 【PHP7.1】使用OpenSSL来代替Mcrypt加解密【原创】
- 使用PHP7.1的openssl加解密AES-128-CBC,与7.0之前的版本匹配
- DedeCMS V5.7使用session_register()在PHP5.4以上无法登录后台,页面无显示
- PHP 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密
- 解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
- php中使用异步调用获取数据时出现【由于出现错误 c00ce56e 而导致此项操作无法完成】
- 由于使用了一个未经验证的清除垃圾文件的程序,导致Oracle数据库无法接(能启动),系统报错:
- 使用“一键清理垃圾”导致.Net程序无法运行的解决办法
- PHP(10) 用户登录程序(版本2) 推荐
- 使用NSKeyedArchiver保存数据导致程序退出问题
- 态调用Excel避免因为版本不同而使用程序无法编辑或调试
- 误使用rm删除数据文件导致oracle无法启动的修复方法
- PHP中POST提交数据name,使用$name无法得到值
- 修正ECMALL在PHP5.3以上版本中无法开启支付方式的BUG
- WindowsServer2003R2、IIS6下非常让人郁闷的ASP.NET MVC在大用户量下Session会乱串的无法正确读取数据,导致系统无法正常使用
- ARX二次开发中使用DAO方式访问数据库,导致AutoCAD2004及以上版本退出时报错的解决方法
- 在使用Weblogic 8.1.5以上版本时,AEM中无法看到Weblogic中的数据源