import json
import hashlib
def md5(str):
m = hashlib.md5()
b = str.encode(encoding='utf-8')
m.update(b)
md5_str = m.hexdigest()
return md5_str
def typeof(variate):
t = None
if isinstance(variate, int):
t = "int"
elif isinstance(variate, str):
t = "str"
elif isinstance(variate, float):
t = "float"
elif isinstance(variate, list):
t = "list"
elif isinstance(variate, tuple):
t = "tuple"
elif isinstance(variate, dict):
t = "dict"
elif isinstance(variate, set):
t = "set"
return t
def getSign(data, secret):
if len(data) < 1:
return "", False
key_list = sorted(data)
sign_str = ""
for k in key_list:
v = data[k]
if k != 'sign' and typeof(v) != 'list':
sign_str += k + '=' + str(v) + '&'
md5_str = sign_str.rstrip('&') + secret
sign = md5(md5_str)
if sign != data['sign']:
return sign, False
return sign, True
if __name__ == '__main__':
jsonStr = '{"zone_id":"1","server_id":"1","role_list":["123456"],"time":"1624240969","sign":"f249dabd9a9ee9bb0a0c434d3221b3be"}';
json_data = json.loads(jsonStr)
secretKey = "aabbccddeeffgg"
sign, signFlag = getSign(json_data, secretKey)
if signFlag:
print("验签成功", sign)
else:
print("验签失败", sign)