File size: 844 Bytes
58ca197
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import hmac
import hashlib
import json

SECRET_KEY = "OArmXWpMeX8n"  # 小程序中使用的 key


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)