备注
本规则适用接口数据传输,签名验证,等
加密方法
// 传入用户ID和token过期时间 function encodeToken($userCode = 0, $time = 0) { // 计算长度 $strlen = strlen($userCode.$time); // 需要加密的子串 $string = $userCode.$time; // 置空用户存储转换后的子串 $encodeString = ''; // 进行转化 自己看咯 for ($i=0;$i< $strlen;$i++) $encodeString = $encodeString.chr($string{$i}); return base64_encode(md5($userCode).base64_encode($encodeString)); }
解密方法
// $data 接收到的token function decodeToken($data) { $uniqueToken = base64_decode($data); // 截取签名长度 $sign = substr($uniqueToken,0,32); // 反解数据 $data = base64_decode(substr($uniqueToken,32)); $string = ''; // 解密子串 for ($i=0;$i< strlen($data);$i++) $string = $string.ord($data{$i}); // 验证token是否被改过 $tokenData = substr($string, 0, (strlen($string)-10)); if($sign !== md5($tokenData)) return [ 'result' => false, 'errCode' => 'token验证失败' ]; // 获取过去时间 $expire = substr($string, (strlen($string) -10)); if(time() >= $expire) return [ 'result' => false, 'errCode' => 'token失效请重新获取' ]; // 获取用户信息注入全局变量,方便后续使用 if(!$userData) return [ 'result' => false, 'errCode' => '非法token,无法完成数据操作' ]; // 返回用户数据 $response = [ 'result' => true, 'data' => $tokenData, ];