pointapi/common/verification.py
2021-04-02 16:03:26 +08:00

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