python md5 请求 构造
-----------------md5加密的方法:----------------------------------
import hashlib
m = hashlib.md5() #创建md5对象
m.update(new_temp) #生成加密字符串,其中temp是已拼接好的字符串 按字母大小拼接可以用函数sorted见 让字典 按值大小排序的方法
sign = m.hexdigest() #获取加密后的字符串
print m.hexdigest()
---------------------------------------------------------------
用法例子:
完成
后记:
上面图片的 请求参数为空,有参数时请求参数要拼接,见下面
(踩坑一) 有时请求头要把 Content-Type 这个字段去掉,不然还是会签名错误
(踩坑二) 接下来的请求,请求头字段和登陆一样的 值要保持一致,采坑 登陆version:2.1.4 我其他请求 写了 version:2.1.5 报签名错误,被坑死 搞了3个小时才发现
(踩坑三) 字符拼接少了&在中间,看了签名算法才发现少加了~~郁闷
(踩坑四) 用python写的时候忘记请求参数是用=号去拼接body 放入签名里面的,用了:号 ~~尴尬
签名可以封装成函数,见july大神代码
我自己搞的
用到的字典转换,排序,拼接等方法:
https://www.cnblogs.com/kaibindirver/p/10735195.html
https://www.cnblogs.com/kaibindirver/p/10722878.html
---------------------------------- MD5进阶-----------2022做测试平台用到
import hashlib
hash = hashlib.md5()#md5对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来
hash.update(bytes('admin',encoding='utf-8'))#要对哪个字符串进行加密,就放这里
print(hash.hexdigest())#拿到加密字符串
# hash2=hashlib.sha384()#不同算法,hashlib很多加密算法
# hash2.update(bytes('admin',encoding='utf-8'))
# print(hash.hexdigest())
hash3 = hashlib.md5(bytes('abd',encoding='utf-8'))
''' 如果没有参数,所以md5遵守一个规则,生成同一个对应关系,如果加了参数,
就是在原先加密的基础上再加密一层,这样的话参数只有自己知道,防止被撞库,
因为别人永远拿不到这个参数
'''
hash3.update(bytes('admin',encoding='utf-8'))
print(hash3.hexdigest())