import hashlib from settings import settings __all__ = 'restore_field', 'sort_kv', 'check_sign', 'check_preset' def restore_field(data: dict) -> dict: res = dict() for k, v in data.items(): res[settings.FIELD_MAP.get(k) or k] = v return res def check_preset(data: dict): preset_name = set(settings.FIELD_MAP.values()) illegality_name = dict() for k, v in data.items(): if k.startswith('#') and k not in preset_name: illegality_name[k] = v for k, v in illegality_name.items(): del data[k] data[k[1:]] = v return data # 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