import hashlib
from copy import deepcopy
def md5_sign(org_params, secret_key):
params = deepcopy(org_parms)
if "sign" in params:
params.pop("sign")
lists = []
for item in params:
lists.append(item)
lists.sort()
tmp = []
for key in lists:
value = params[key]
if isinstance(value, bytes):
value = value.decode("utf-8")
if isinstance(key, bytes):
key = key.decode("utf-8")
tmp.append("=".join([key, str(value)]))
if isinstance(secret_key, bytes):
secret_key = secret_key.decode("utf-8")
tmp.append("=".join(['secret_key', secret_key]))
param_str = "&".join(tmp)
if not isinstance(param_str, bytes):
param_str = param_str.encode('utf-8')
return hashlib.md5(param_str).hexdigest()
def check_sign(param, secret_key):
data = deepcopy(param)
if "sign" in data:
org_sign = data.pop('sign')
else:
return False
if not org_sign:
return False
if sign_type != 'MD5':
return False
nsg = md5_sign(data, secret_key)
print(nsg)
return org_sign == nsg
if __name__ == '__main__':
params = {"sing": "1", "method": "2", "id": "1231", "key": "apdfa", "sort": "serr"}
print(md5_sign(params, 'SECRET'))