| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 
							- import hmac
 
- import hashlib
 
- import base64
 
- from datetime import datetime
 
- class HMACValidatorObject:
 
-     def __init__(self):
 
-         """
 
-         初始化HMAC签名与验签类。
 
-         """
 
-         secret = "4f92e6aa7e231ea8b9c"
 
-         self.secret = secret.encode('utf-8')
 
-     def sign(self, data):
 
-         """
 
-         使用共享密钥对数据进行签名。
 
-         :param data: 需要签名的字符串数据
 
-         :return: 返回签名的base64编码字符串
 
-         """
 
-         signature = hmac.new(self.secret, data.encode('utf-8'), hashlib.sha256).digest()
 
-         return base64.b64encode(signature).decode('utf-8')
 
-     def verify(self, data, provided_signature):
 
-         """
 
-         使用共享密钥对签名进行验证。
 
-         :param data: 原始字符串数据
 
-         :param provided_signature: 请求中提供的签名 (base64编码)
 
-         :return: 验签结果,True表示签名有效,False表示签名无效
 
-         """
 
-         expected_signature = self.sign(data)
 
-         return hmac.compare_digest(expected_signature, provided_signature)
 
-     @staticmethod
 
-     def generate_timestamp():
 
-         """
 
-         生成当前时间戳,用于防止重放攻击。
 
-         :return: 当前时间的ISO格式字符串
 
-         """
 
-         return datetime.utcnow().isoformat()
 
-     @staticmethod
 
-     def validate_timestamp(timestamp, tolerance_seconds=300):
 
-         """
 
-         校验时间戳是否在允许的范围内。
 
-         :param timestamp: Unix时间戳 (秒级)
 
-         :param tolerance_seconds: 容许的时间误差,单位为秒 (默认5分钟)
 
-         :return: 时间戳是否在有效范围内
 
-         """
 
-         try:
 
-             # 将Unix时间戳转为datetime对象
 
-             request_time = datetime.utcfromtimestamp(int(timestamp))
 
-             current_time = datetime.utcnow()
 
-             # 计算时间差(秒级)
 
-             delta = (current_time - request_time).total_seconds()
 
-             # 判断时间差是否在容许范围内
 
-             return abs(delta) <= tolerance_seconds
 
-         except ValueError:
 
-             return False
 
 
  |