Python 实现用户登录系统 案例 二(基于hashlib & sys & 对象序列化 [将用户名、密码信息序列化后保存到本地文件中 ])
import sys
import hashlib
import pickle
"""
实现一个用户登录系统,用户可以输入用户面进行用户的注册、用户的登录、退出系统等操作。
为了安全起见,引入hashlib中的MD5算法对用户密码进行明文加密。
"""
users = []
slat = "'zhangwanqiangR%BIYGGF#BUYybjuhunBYGBnnB)((*&&^%$$#$%Y(B~!~`'"
def pro_init():
global users
"""" 初始化软件一些必须的数据 """
users = pickle.load(open("users.data", "rb"))
print(users)
def save_users_info():
save_users_data = pickle.dumps(users)
with open("users.data", "wb") as file:
file.write(save_users_data)
print("对象保存完成")
def users_password_md5(user_password):
user_password_md5 = hashlib.md5(user_password.encode("utf-8"))
user_password_md5.update(slat.encode("utf-8"))
return user_password_md5.hexdigest()
def main():
print("~*" *25)
print()
print("\t\t\t\t\t用户登录系统")
print()
print("\t\t\t\t\t1、用户注册")
print("\t\t\t\t\t2、用户登录")
print("\t\t\t\t\t3、查询用户信息")
print("\t\t\t\t\t4、退出系统")
print()
print("~*" * 25)
user_chioce = input("请输入您的选择:")
return user_chioce
def is_exist_user(username):
for usr in users:
if usr.get("username") == username:
return True
return False
def is_login(user_name, user_password):
for i in users:
if i.get("username") == user_name and i.get("userpassword") == user_password:
return True
return False
def register():
user_name = input("请输入您的用户名:")
user_password = input("请输入您的用户密码:")
if user_name == None or user_name.strip() == "":
print("对不起,用户名不能为空")
return
if user_password == None or user_password.strip() == "" or len(user_password) < 3:
print("对不起,用户密码长度不能小于3位")
return
if is_exist_user(user_name):
print("对不起,该用户已经存在,请重新输入!")
return
user = {}
user["username"] = user_name
user["userpassword"] = users_password_md5(user_password)
print(user)
users.append(user)
save_users_info()
print("用户信息保存完成")
def login():
user_name = input("请输入您的用户名:")
user_password = input("请输入您的用户密码:")
user_password = users_password_md5(user_password)
if is_login(user_name, user_password):
print("恭喜您登录成功")
else:
print("对不起,您输入的用户名、密码有误!!!")
print("请您重新登录!")
pro_init()
while True:
chioce = main()
if chioce == "1":
print("用户注册")
register()
elif chioce == "2":
print("用户登录")
login()
elif chioce == "3":
print(users)
elif chioce == "4":
print("退出系统")
sys.exit(0)