get
url + ? +参数
eg:url?a=1&b=2
- 取参
- 排序
- 将参数拼成字符串:a=1&b=2,再用MD5将字符串和校验唯一码key拼接,再加密。MD5(a=1&b=2 + key)=sign
- 将参数和sign加到url中。url?参数&sign
post
url + ?+ sign=…
1.将传入的json的body中的内容组成字典,然后将字典的键值对拼成一个字符串。
2.再用MD5将字符串和校验唯一码key拼接,再加密。MD5(a=1&b=2 + key)=sign
def generate_signature(json_data):
md_obj = hashlib.md5()
sign_dict = deepcopy(json_data)
if "sign" in sign_dict.keys():
sign_dict.pop('sign')
# 将请求参数按字母排序
sign_list = [[k, sign_dict[k]] for k in sorted(sign_dict.keys())]
sign_str = ""
# 将参数拼成键值对字符串
for key, part in enumerate(sign_list):
period_str = f'{part[0]}={part[1]}&'
if key == len(sign_list) - 1:
period_str = period_str[:-1]
sign_str += period_str
sign_str += IOT_SECRET_KEY
md_obj.update(sign_str.encode('utf-8'))
return md_obj.hexdigest()