123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- /**
- * Rsaauth.class.php UTF-8
- * 对称 非对称加密 请求与返回
- *
- * @date : 2016年11月9日下午11:46:45
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : HUOSDK 7.0
- * @modified: 2016年11月9日下午11:46:45
- */
- namespace huosdk\response;
- use think\Log;
- use think\Loader;
- use huosdk\common\Rsa;
- use huosdk\common\Authcode;
- class Rsaauth {
- private $rsa_pri_path = null;
- private $limit_time_diff = 5;
- private $time_flag = true;
- /**
- * 自定义错误处理
- *
- * @param msg 输出的文件
- */
- private function _error($msg, $level = 'error') {
- $_info = 'Rsaauth Error:'.$msg;
- Log::record($_info, 'error');
- }
- /**
- * Rsaauth constructor.
- *
- * @param bool $time_flag 时间标记
- * @param int $limit_time_diff
- * @param string $rsa_pri_path
- */
- public function __construct($time_flag = true, $limit_time_diff = 5, $rsa_pri_path = '') {
- $this->time_flag = $time_flag;
- $this->limit_time_diff = $limit_time_diff;
- $this->rsa_pri_path = $rsa_pri_path;
- }
- public function getAuthkey($key = '', $change_flag = true, $rsa_pri_path = '') {
- $_pri_path = $rsa_pri_path;
- if (empty($_pri_path)) {
- $_pri_path = $this->rsa_pri_path;
- }
- $_rsa_class = new \huosdk\common\Rsa('', $_pri_path);
- $_key = $key;
- if (empty($_key) && !empty($_POST['key'])) {
- $_key = urldecode($_POST['key']);
- }
- $_rsa_key = $_rsa_class->decrypt($_key);
- if (!$_rsa_key) {
- return false;
- }
- $_rsa_key_arr = explode('_', $_rsa_key);
- $_client_id = $_rsa_key_arr[0];
- $_time = $_rsa_key_arr[1];
- $_rand16 = $_rsa_key_arr[2];
- if (empty($_client_id) || empty($_time) || empty($_rand16)) {
- return false;
- }
- if ($change_flag) {
- $_game_class = new \huosdk\game\Game(0, $_client_id);
- $_client_key = $_game_class->getClientkey($_client_id);
- if (empty($_client_key)) {
- return false;
- }
- $_auth_key = $_client_key.$_rand16;
- } else {
- $_auth_key = $_rsa_key;
- }
- // $_time_diff = $this->timeDiff($_time);
- // if ($this->time_flag && $_time > $this->limit_time_diff){
- // return false;
- // }
- return $_auth_key;
- }
- public function timeDiff($time) {
- $_now_time = time();
- $_time_diff = abs($_now_time - $time);
- return $_time_diff;
- }
- /**
- * 获取请求数据
- *
- * @param $path 文件创建路径
- * @param $name 文件创建名称
- *
- * @return bool 成功返回true 失败返回 false
- */
- public function getRqdata($key, $data = '') {
- $_data = $data;
- if (empty($_data) && !empty($_POST['data'])) {
- $_data = urldecode($_POST['data']);
- }
- $_ac_class = new \huosdk\common\Authcode();
- $_rq_data = $_ac_class->discuzAuthcode($_data, 'DECODE', $key);
- if (empty($_rq_data)) {
- return false;
- }
- $_rq_data = json_decode($_rq_data, true);
- return $_rq_data;
- }
- public function getAuthdata(array $responcedata, $key) {
- $_authdata['responcedata'] = json_encode($responcedata);
- $_rsa_class = new \huosdk\common\Rsa('', $this->rsa_pri_path);
- $_authdata['sign'] = $_rsa_class->sign($_authdata['responcedata']);
- //对称加密
- $_auth_class = new \huosdk\common\authCode();
- $_auth_jsondata = json_encode($_authdata);
- return $_auth_class->discuzAuthcode($_auth_jsondata, 'ENCODE', $key, 0);
- }
- }
|