实现基本的用户注册和登录功能,密码采用sha256的哈希算法加密,使用了盐值与密码拼接后再进行哈希处理的方式。
import sys
import hashlib
import secrets
# 存储所有用户的字典
users = {}
# 密码哈希函数,生成随机盐值
def password_hash(password):
salt = secrets.token_hex(16)
hashed = hashlib.sha256((salt + password).encode()).hexdigest()
return salt, hashed
# 验证密码是否正确
def validate_password(password, salt, hashed):
return hashed == hashlib.sha256((salt + password).encode()).hexdigest()
# 注册
def register():
username = input("请输入用户名:")
password = input("请输入密码:")
if not username or not username.strip():
print("用户名不能为空")
return
if not password or not password.strip() or len(password) < 6:
print("密码长度不能少于6位")
return
if username in users:
print("该用户名已经被注册,请重新输入")
return
# 对密码进行哈希处理
salt, hashed = password_hash(password)
# 将用户信息保存到字典中 {username: {'salt': salt, 'hashed': hashed}}
user = {'salt': salt, 'hashed': hashed}
users[username] = user
print("用户注册成功")
# 登录
def login():
username = input("请输入用户名:")
password = input("请输入密码:")
user = users.get(username)
if not user:
print("该用户不存在,请重新输入")
return
if validate_password(password, user['salt'], user['hashed']):
print("用户登录成功")
else:
print("密码错误,请重新输入")
def main():
print("~*" * 20)
print("\t\t 1.用户注册")
print("\t\t 2.用户登录")
print("\t\t 3.退出系统")
print("~*" * 20)
choice = input("请输入您要操作的选项:")
return choice
if __name__ == '__main__':
while True:
choice = main()
if choice == "1":
print("用户注册")
register()
elif choice == "2":
print("用户登录")
login()
else:
print("退出系统")
sys.exit()
运行结果: