|
import hmac |
|
import hashlib |
|
import json |
|
|
|
SECRET_KEY = "OArmXWpMeX8n" |
|
|
|
|
|
def generate_signature(data: dict, key: str = SECRET_KEY) -> str: |
|
""" |
|
生成签名 |
|
:param data: 请求数据 (dict) |
|
:param key: 签名密钥 |
|
:return: 签名字符串 |
|
""" |
|
data_str = json.dumps(data, separators=(',', ':'), ensure_ascii=False) |
|
return hmac.new(key.encode(), data_str.encode(), hashlib.sha256).hexdigest() |
|
|
|
|
|
def verify_signature(data: dict, client_signature: str, key: str = SECRET_KEY) -> bool: |
|
""" |
|
校验签名 |
|
:param data: 请求数据 (dict) |
|
:param client_signature: 客户端提供的签名 |
|
:param key: 签名密钥 |
|
:return: 签名是否有效 |
|
""" |
|
server_signature = generate_signature(data, key) |
|
return hmac.compare_digest(server_signature, client_signature) |
|
|