35 lines
785 B
Python
35 lines
785 B
Python
import hashlib
|
|
|
|
from settings import settings
|
|
|
|
__all__ = 'restore_field', 'sort_kv', 'check_sign'
|
|
|
|
|
|
def restore_field(data: dict) -> dict:
|
|
"""
|
|
不在预置字段 去掉前置#
|
|
:param data:
|
|
:return:
|
|
"""
|
|
res = dict()
|
|
for k, v in data.items():
|
|
map_name = settings.FIELD_MAP.get(k)
|
|
if map_name:
|
|
res[map_name] = v
|
|
elif k.startswith('#'):
|
|
res[k[1:]] = v
|
|
else:
|
|
res[k] = v
|
|
return res
|
|
|
|
|
|
def sort_kv(*args: dict):
|
|
return '&'.join(map(lambda item: '&'.join(map(lambda x: f'{x[0]}={x[1]}', sorted(item.items()))), args))
|
|
|
|
|
|
def check_sign(sign: str, salt: str, *args: dict):
|
|
s = sort_kv(*args) + salt
|
|
if hashlib.md5(s.encode()).hexdigest() != sign:
|
|
return False
|
|
return True
|