Python MD5加密

需求:登录接口用户密码:需要在用户输入的密码加盐值。且在盐值的第八位和第九位之间插入密码··

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 读取文件中的接口信息:URL/用户名/密码/账户类型/等
def datacel(filrpath):
try:
file = xlrd.open_workbook(filrpath)
me = file.sheets()[0]
nrows = me.nrows
for i in range(3, nrows):
pwd = me.cell(i, 3).value # 获取excel文件中的第4行第4列的值
url = me.cell(i,4).value # 获取excel文件中的第4行第5列的值
data = json.loads(pwd) # 转化成json格式
data_pwd = data['password'] # 获取data中的password的值
data_account = data['account'] # 获取data中的account的值
data_type = data["accountType"]
datalist = [] # 定义一个新的dict类型的datalist存放账户,密码,类型等
datalist.append(data_pwd) # 追加到datalist
datalist.append(data_account)
datalist.append(data_type)
datalist.append(url)
print(datalist) #返回datalist
return datalist
except Exception as e:
print('打开测试用例失败,原因是:%s'%e)
return
1
2
3
4
5
6
7
8
9
# 生成一个盐值16位的盐值,盐值范围在A-Z 0-9中
def create_salt(length = 16):
salt = ''
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
len_chars = len(chars) - 1
random = Random()
for i in xrange(length): # 每次从chars中随机取一位
salt += chars[random.randint(0, len_chars)]
return salt
1
2
3
4
5
6
7
8
9
10
11
12
13
# 在生成的盐值的第八位和第九位中插入密码,再进行MD5加密
def create_md5(pwd):

md = hashlib.md5()
salt = create_salt()
print(salt)
print(salt[0:8])
print(salt[8:])
new_pwd=salt[0:8].encode()+pwd.encode()+salt[8:].encode() # 在生成的盐值的第八位和第九位之间插入密码
print(new_pwd)
md.update(salt[0:8].encode()+pwd.encode()+salt[8:].encode()) # 生成MD5加密
print(md.hexdigest())
return md.hexdigest()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def login_user():
path = os.getcwd() + '\\case.xlsx'
data = datacel(path)
accountType = data[2]
pwd = data[0]
account = data[1]
url = 'http://47.99.122.85:8081'+data[3]
MD5_pwd = create_md5(pwd) # 将用户密码加密
headers={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:51.0) Gecko/20100101 Firefox/51.0","language":"zh_CN","appId":"1","Content-Type":"application/json"}
param={"account":account, "password":MD5_pwd, "accountType":accountType}
reslut=requests.post(url,json=param,headers=headers)
reslut.encoding = 'UTF-8'
json_response = json.loads(reslut.text)
print(json_response)


if __name__ == '__main__':
login_user()