Files
fdesk/app/common/utils/SystemAuth.php
T
2026-03-03 11:44:20 +08:00

47 lines
1.3 KiB
PHP

<?php
namespace app\common\utils;
class SystemAuth
{
/**
* 生成签名
* @param string $userId 用户ID
* @param int $timestamp Unix时间戳
* @param string $secret 共享密钥
* @return string
*/
public static function generateSignature(string $userId, int $timestamp, string $secret): string
{
$data = $userId . $timestamp;
return hash_hmac('md5', $data, $secret);
}
/**
* 验证签名
* @param string $userId 用户ID
* @param int $timestamp Unix时间戳
* @param string $receivedSignature 接收到的签名
* @param string $secret 共享密钥
* @return bool
*/
public static function verifySignature(string $userId, int $timestamp, string $receivedSignature, string $secret): bool
{
$expectedSignature = self::generateSignature($userId, $timestamp, $secret);
return hash_equals($expectedSignature, $receivedSignature);
}
/**
* 验证时间戳是否在有效期内
* @param int $timestamp Unix时间戳
* @param int $maxSeconds 有效期(秒)
* @return bool
*/
public static function verifyTimestamp(int $timestamp, int $maxSeconds = 600): bool
{
$now = time();
$diff = abs($now - $timestamp);
return $diff <= $maxSeconds;
}
}