php7.0以上版本 mcrypt拓展无法使用导致小程序登录数据无法解密
来源:互联网 发布:帝国cms微信支付接口 编辑:程序博客网 时间:2024/06/01 12:05
巨坑:微信小程序用户信息加密解密(贴出数据方便大家测试)
<?php$appid = 'wx9bc23a213818b5d6';$iv = 'aPsEWbOPfJIkhox5SEJ2Fg==';$encryptedData = 'W7qZC6qhy0q+8N0L87GpD9iasN3KgVMY7Vo9qTQvNObcOd21D3D5+dkjIAx+AmMtRRNFESt3tSxbRhQmuwUGd918AEY1hfcRkjXWIC0+vEfFYqg2faMC/QbxXiUI/QDpmfiG91StQqaq/Q9oai1uFvMjoAy+pReJ2jSau7YqcWSoAqm1kJSZjMMPkMk7O1kYniz/2Lj8rXvxhdqfkyyTlNzO/vMe9odRZy3ShBfcAnWMghH9pgSE3/qIk/aYGpc44oEXNNRE5donsmoIx0ZeUa5cUjsnfx/XUtIAK5fz4h/5AuebPLOZIWhB+NQR7VFgHt0QNyT7L5XdZNkIy4nmn4iQd9zWYS2OuTuJZW6Qr7BEJGbh7lfr24Y6iZjLVEzKwAOoY41OcDUED543y0hcX oWk9l0QInlCLYxBPZ4gELxPAJRmGuwjN2CRaJz0F61PqLGhzq9ih1uAkPbIvnoHWC5blWuVRxc+3N8E3hGst6bAz7e1rIWb3HJSooSa67Jl';$sessionKey = '9yjhuwVi9qYKnNpqw9sgVg==';$pc = new WXBizDataCrypt($appid, $sessionKey); //这里的解密规则可以看文档,仔细看过就能懂(已经理解过)$errCode = $pc->decryptData($encryptedData, $iv, $data);
下面是要修改的文件类:WXBizDataCrypt.php中方法
/** * 检验数据的真实性,并且获取解密后的明文. * @param $encryptedData string 加密的用户数据 * @param $iv string 与用户数据一同返回的初始向量 * @param $data string 解密后的原文 * * @return int 成功0,失败返回对应的错误码 */ 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); if ($result[0] != 0) { return $result[0]; } $dataObj = json_decode($result[1]);// echo "<pre>";print_r($dataObj);die; if ($dataObj == NULL) { return ErrorCode::$IllegalBuffer . '--'; } if ($dataObj->watermark->appid != $this->appid) { return ErrorCode::$IllegalBuffer . ';;'; } $data = $result[1]; return ErrorCode::$OK; }
还有解密的方法类:PKCS7Encoder.php 中的class Prpcrypt
/** * Prpcrypt class * * */class Prpcrypt{ public $key; function __construct($k) { $this->key = $k; } /** * 对密文进行解密 * @param string $aesCipher 需要解密的密文 * @param string $aesIV 解密的初始向量 * @return string 解密得到的明文 */ public function decrypt($aesCipher, $aesIV) { try { $decrypted = openssl_decrypt($aesCipher, 'AES-128-CBC', $this->key, OPENSSL_ZERO_PADDING, $aesIV); } catch (Exception $e) { return array(ErrorCode::$IllegalBuffer, null); } try { //去除补位字符 $pkc_encoder = new PKCS7Encoder; $result = $pkc_encoder->decode($decrypted); } catch (Exception $e) { return array(ErrorCode::$IllegalBuffer, null); } return array(0, $result); }}
阅读全文
0 0
- php7.0以上版本 mcrypt拓展无法使用导致小程序登录数据无法解密
- php7.1以上版本 mcrypt拓展无法使用导致小程序登录数据无法解密
- PHP使用mcrypt进行AES加密后的数据NodeJS等无法解密的问题修复方案
- 【PHP7.1】使用OpenSSL来代替Mcrypt加解密【原创】
- EXCEL2003版无法运行2007以上版本VBA程序
- 无法载入 mcrypt 扩展
- MyEclipse6.0及以上版本代码提示ALT+/无法使用的解决办法
- 高德地图 AMap3DMap_4.0导航功能 在5.0以上版本无法使用的解决方法
- Jquery 1.9.0 以上版本扩展$.browser无法使用的问题
- Android4.0以上版本OptionsMenu无法显示图标的问题
- Android4.0以上版本OptionsMenu无法显示图标的问题
- 总结:mac下使用mamp pro给php7.0以上版本安装redis扩展的坑
- PHP7的session无法使用memcache
- Thread.interrupt() 使用不当,导致程序无法退出
- Thread.interrupt() 使用不当,导致程序无法退出
- 使用mcrypt加/解密【转载】
- 无法使用dba登录
- 修改/etc/profile导致系统无法登录
- c++模板深度理解
- ## 用于结构体的定义
- 问题:Linux 设备 eth0 似乎不存在, 初始化操作将被延迟
- HTML 文本格式化
- HDU2457-DNA repair
- php7.0以上版本 mcrypt拓展无法使用导致小程序登录数据无法解密
- STM32外部晶振8M更改为25M
- 计算机网络原理——网络设备
- matlab区分卷积和相关
- 6.6
- JAVA中垃圾回收机制
- 自我介绍及学习规划
- 高级软件工程(C编码实践篇)总结
- 生活与工作原则-Ray Dalio