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