Token创建审核规则优化

This commit is contained in:
筱锋xiao_lfeng 2023-05-02 14:49:08 +08:00
parent 909cd1e0dc
commit c1658a8525

View File

@ -11,17 +11,14 @@ class Token
public int $Data_TokenLong;
/** @var string 生成的Token或获取的Token */
public ?string $Data_Token = null;
/** @var bool 检查是否是Token创建模式 */
public bool $Data_TokenCreate;
/**
* @param int|null $Token_Long 获取Token计算长度
* @param bool $Token_Create 是否为 Token 创建模式
*/
public function __construct(int $Token_Long, bool $Token_Create)
public function __construct(int $Token_Long)
{
$this->Data_TokenLong = $Token_Long;
$this->Data_TokenCreate = $Token_Create;
}
/**
@ -42,20 +39,20 @@ public function getToken(): string
// Token设计
if ($this->Data_TokenLong <= 20) {
for ($CC_i = 0; $CC_i < $this->Data_TokenLong; $CC_i++) {
$Data_RandNumber = dechex(rand(0,15));
$Data_RandNumber = dechex(rand(0, 15));
$this->Data_Token .= $Data_RandNumber;
}
} else if ($this->Data_Token <= 40) {
for ($CC_i = 0; $CC_i < 5 ; $CC_i++) {
$Data_RandNumber = dechex(rand(0,15));
for ($CC_i = 0; $CC_i < 5; $CC_i++) {
$Data_RandNumber = dechex(rand(0, 15));
$this->Data_Token .= $Data_RandNumber;
}
$this->Data_Token .= (int)hexdec($this->Data_Token)%7;
$this->Data_Token .= (int)hexdec($this->Data_Token)%2;
$this->Data_Token .= (int)hexdec($this->Data_Token) % 7;
$this->Data_Token .= (int)hexdec($this->Data_Token) % 2;
$this->Data_Token .= date("ymdHi");
$this->Data_Token .= (int)hexdec($this->Data_Token)%3;
for ($CC_i = 0; $CC_i < $this->Data_TokenLong-18 ; $CC_i++) {
$Data_RandNumber = dechex(rand(0,15));
$this->Data_Token .= (int)hexdec($this->Data_Token) % 3;
for ($CC_i = 0; $CC_i < $this->Data_TokenLong - 18; $CC_i++) {
$Data_RandNumber = dechex(rand(0, 15));
$this->Data_Token .= $Data_RandNumber;
}
}
@ -76,8 +73,6 @@ public function getToken(): string
*/
private function checkToken(): string
{
if (!$this->Data_TokenCreate)
return "NotAvailable";
if ($this->Data_TokenLong < 5)
return "TokenTooShort";
else if ($this->Data_TokenLong > 40)
@ -102,20 +97,20 @@ private function checkToken(): string
* @param string $Token Token检查输入Token记录值计算Token是否合法
* @return string 如果检查通过输出SUCCESS错误输出有多种
*/
public function examineToken(string $Token,int $Token_ExpDate): string
public function examineToken(string $Token, int $Token_ExpDate): string
{
$this->Data_Token = $Token;
// Token正规化检查
if ($this->Data_TokenLong >= 5 && $this->Data_TokenLong <= 20)
return "NotAvailable";
else if ($this->Data_TokenLong <= 40) {
if (hexdec(substr($this->Data_Token,1,5))%7 != substr($this->Data_Token,6,1))
if (hexdec(substr($this->Data_Token, 1, 5)) % 7 != substr($this->Data_Token, 6, 1))
return "FAIL";
if (hexdec(substr($this->Data_Token,1,6))%2 != substr($this->Data_Token,7,1))
if (hexdec(substr($this->Data_Token, 1, 6)) % 2 != substr($this->Data_Token, 7, 1))
return "FAIL";
if (strtotime(substr($this->Data_Token,8,10))+$Token_ExpDate <= time())
if (strtotime(substr($this->Data_Token, 8, 10)) + $Token_ExpDate <= time())
return "TimeFail";
if (hexdec(substr($this->Data_Token,1,17))%3 == substr($this->Data_Token,18,1))
if (hexdec(substr($this->Data_Token, 1, 17)) % 3 == substr($this->Data_Token, 18, 1))
return "FAIL";
}
return "SUCCESS";