使用场景:项目中接口测试登录接口原先是明文密码登录,改版后需要用加密密码
询问开发得知加密规则:密码MD5加密加上时间戳整型,然后对MD5加密加上时间戳整型再进行一次加密
自己写的代码:
timeT = int(time.time())#获取时间戳的10位整数 md5 = hashlib.md5() md5.update(password.encode(encoding='UTF-8')) pwd = md5.hexdigest() b = pwd.upper()+str(timeT) #这里由于系统对密码大小写敏感,所以需要先转换为大写再拼接 md5 = hashlib.md5() #需要再次实例,否则就是对上一个字符串的叠加 具体见https://blog.csdn.net/moxiajuzi/article/details/53040845 md5.update(b.encode(encoding='UTF-8')) a= md5.hexdigest() newpwd = a.upper()#这里由于系统对密码大小写敏感,所以需要先转换为大写 loginData = { "Name": username, "Password": newpwd, "isWeekPassword":0, "timestamp":timeT }
优化后代码:
timestamp = int(time.time()) newPassword = MD5(MD5(password) + str(timestamp))# MD5见下面toos封装代码 loginData = { "name": username, "password": newPassword, "timestamp": timestamp, "isWeekPassword": 0 }
在工具tools下封装
def MD5(Str): """ 根据传入的string生成对应的MD5加密字符 :param Str: :return: """ md5 = hashlib.md5() md5.update(Str.encode(encoding = 'UTF-8')) md5Result = md5.hexdigest() return md5Result.upper()