首页 > 技术文章 > Md5

dieyaxianju 2018-08-28 16:18 原文

使用场景:项目中接口测试登录接口原先是明文密码登录,改版后需要用加密密码

询问开发得知加密规则:密码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()

 

推荐阅读