PHP加密解密方法 阿星小栈

 

 //版本号 ticketId nowtime  协议 (。。。)  用a分割
    public static function makeTicketToken($params){
        $salt = 'fxyy$&ticket';
        $nowTime = time();
        $ticketId = isset($params['ticket_id']) ? $params['ticket_id'] :0;
        $ticketToken = '1a'.$ticketId.'a'.$nowTime;
        $protocol = $params['protocol'];
        if($protocol == 1){// 订单
            $orderTicketId = $params['order_ticket_id'];
            $ticketToken .= 'a1a'.$orderTicketId;
        }else if($protocol == 2){// 订单分享票
            $ticketAchieveId = $params['ticket_achieve_id'];
            $ticketToken .= 'a2a'.$ticketAchieveId;
        }else if($protocol == 3){// 授权票  invite_status 0 分配座位
            $ticketGrantId = $params['ticket_grant_id'];
            $ticketToken .= 'a3a'.$ticketGrantId;
        }else if($protocol == 4) {// 无座验票二维码
            $inviteUserRelId = $params['invite_user_rel_id'];
            $ticketToken .= 'a4a' . $inviteUserRelId;
        }else if($protocol == 5){// 授权票  2不用验证入场
            $ticketGrantId = $params['ticket_grant_id'];
            $ticketToken .= 'a5a'.$ticketGrantId;
        }
        $ticketStrMd5 = md5($ticketToken.$salt);
        $ticketToken = $ticketToken.$ticketStrMd5;
        return base64_encode($ticketToken);
    }
    
    public static function getTicketByToken($ticketToken){
        $salt = 'fxyy$&ticket';
        $ticketToken = base64_decode($ticketToken);
        $ticketTokenLen = mb_strlen($ticketToken);
        $token = substr($ticketToken, $ticketTokenLen - 32);
        $ticketStr = substr($ticketToken, 0, $ticketTokenLen - 32);
        $tokenServer = md5($ticketStr.$salt);
        if($token != $tokenServer){
            return [];
        }
        $ticketArr = explode('a', $ticketStr);
        if(empty($ticketArr)){
            return [];
        }
        \Log::info('$ticketArr', ['$ticketArr'=>$ticketArr]);
        $version = $ticketArr[0];
        if($version == 1){
            $ticketId = $ticketArr[1];
            $makeTime = $ticketArr[2];
            $protocol = $ticketArr[3];
            $ret = [
                'protocol'=>$protocol,
                'ticket_id'=>$ticketId,
                'make_time'=>$makeTime
            ];
            if($protocol == 1){
                $ret['order_ticket_id'] = $ticketArr[4];
                $orderTicket = OrderTicket::getOrderTicketByWhere([
                    ['th_order_ticket.id',$ret['order_ticket_id']]
                ]);
                if(empty($orderTicket)){
                    return [];
                }
                return $ret;
            }else if($protocol == 2){
                $ticketAchieveId = $ticketArr[4];
                $ret['ticket_achieve_id'] = $ticketAchieveId;
                return $ret;
            }else if($protocol == 3){
                $ret['ticket_grant_id'] = $ticketArr[4];
                return $ret;
            }
        }
        return [];
    }

生成随机字符串

 public function create_randomstr($lenth = 6) {
        return $this->random($lenth, '123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ');
    }


 public function createsign(){
        $id = isset($_POST['id']) ? $_POST['id'] : 0;
        $createsign_data = uniqid(mt_rand(),true).'-'.time().'-'.$this->create_randomstr(6);

        if (!empty($createsign_data)) {
            $code = '200';
        }else{
            $code = '400';
        }

        echo json_encode(array('code'=>$code,'Message'=>strtoupper(md5($createsign_data))));
    }

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值