使用hashlib模块将register功能用户的密码进行md5“加盐”加密

   注册功能普通版,请点击这里

 

 

  使用hashlib模块将register功能用户的密码进行md5“加盐”加密并保存到本地

import hashlib

# 定义获取md5密文密码的函数
def get_md5(mm):
    md5_obj = hashlib.md5()    # 获得一个md5 hash对象
    # update中一定要传入bytes类型数据
    md5_obj.update(mm.encode("utf-8"))
    # 创造“盐”,这个“盐”一定要与创建md5密文密码时候的“盐”一致
    sal = "so cool"
    # “加盐”
    md5_obj.update(sal.encode("utf-8"))
    # 返回一个加密后的md5密文字符串
    res = md5_obj.hexdigest()
    return res

# 1.先让用户输入用户名和密码,校验合法性
def get_user_pwd():
    while True:
        # 让用户输入用户名
        username = input("请输入用户名:").strip()
        # 校验用户名是否为纯英文,.isalpha() 检验英文字母、中文
        if username.isalpha():
            break
        else:
            print("用户名不合法,请重新输入...")
    while True:
        # 让用户输入密码
        password = input("请输入密码:").strip()
        re_password = input("请再次输入密码:").strip()
        # 检验两次面是否一致
        if password == re_password:
            # 将用户输入的密码"加盐"转为md5密文密码
            md5_password = get_md5(re_password)
            break
        else:
            print("两次密码不一致,请重新输入...")

    # 先定义一个所有角色的列表
    role_list = ["普通用户", "管理员用户", "超级用户"]
    while True:
        # 让用户输入用户角色
        user_role = input("请输入你的用户角色(普通用户、管理员、超级用户):").strip()
        if user_role in role_list:
            break
        else:
            print("输入错误,请重新输入...")
    return username, md5_password, user_role

# 2.拼接字符串
def cut_user_pwd(user, pwd, role):
    user_info = f"{user}:{pwd}:{role}\n"
    return user_info

# 3.保存用户数据,写入文件中,每个用户用一个文件保存
def save_data(user_pwd_str, user):
    with open(f"user_data/{user}.txt", "w", encoding="utf-8") as f:
        f.write(user_pwd_str)

# 注册功能demo
def register():
    # 1.先让用户输入用户名和密码,校验合法性,得到合法的用户名和密码
    user, pwd, role = get_user_pwd()
    # 2.设计字符串的拼接
    user_pwd_str = cut_user_pwd(user, pwd, role)
    # 3.保存用户数据,写入文件中,每个用户用一个文件保存,以用户名为文件命名
    save_data(user_pwd_str, user)
    print("注册成功!")

# 执行注册功能demo
register()
posted @ 2020-10-15 11:13  chchcharlie、  阅读(233)  评论(0编辑  收藏  举报