热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小程序手机号注册php,PHP解密小程序手机号码

***检验数据的真实性,并且获取解密后的明文.*param$encryptedDatastring加密的用户数据*param$ivstring与用户数据一同返回的初始

/**

* 检验数据的真实性,并且获取解密后的明文.

* @param $encryptedData string 加密的用户数据

* @param $iv string 与用户数据一同返回的初始向量

* @param $data string 解密后的原文

*

* @return int 成功0,失败返回对应的错误码

*/

public function decryptData($encryptedData, $iv, &$data,$code)

{

$getSessionKey = $this->getSessionKey($code);

if (strlen($getSessionKey) != 24) return self::$IllegalAesKey;

$aesKey=base64_decode($getSessionKey);

if (strlen($iv) != 24) return self::$IllegalIv;

$aesIV=base64_decode($iv);

$aesCipher=base64_decode($encryptedData);

$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);

$dataObj=json_decode( $result );

if( $dataObj == NULL ) return self::$IllegalBuffer;

if( $dataObj->watermark->appid != self::$appid ) return self::$IllegalBuffer;

$data = $result;

return $data;

}

/**

* @param $code

* @return mixed

* 获取用户的key

*/

public function getSessionKey($code) {

$url = "https://api.weixin.qq.com/sns/jscode2session?appid=".self::$appid."&secret=".self::$appsecret."&js_code=".$code."&grant_type=authorization_code";

$res = $this->httpRequest($url,'');

$result = json_decode($res, true);

return $result['session_key'];

}

/**

*CRUL 网络请求

*/

public static function httpRequest($url,$data){ // 模拟提交数据函数

$curl = curl_init(); // 启动一个CURL会话

curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在

curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转

curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer

curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求

curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包

curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环

curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回

$tmpInfo = curl_exec($curl); // 执行操作

if (curl_errno($curl)) {

echo 'Errno'.curl_error($curl);//捕抓异常

}

curl_close($curl); // 关闭CURL会话

return $tmpInfo; // 返回数据

}



推荐阅读
author-avatar
蔡伟钊cc
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有