用数据结构编写一个可以添加新用户的可保存的需要密码的登录界面
时间: 2024-09-11 19:06:24 浏览: 62
要创建一个使用数据结构的、可以保存用户并带有密码保护的登录界面,我们可以使用字典(`dict`)来存储用户名和对应的哈希密码(为了安全)。这里我们将使用`hashlib`库来进行哈希操作,以及`getpass`模块来隐藏输入的密码。首先,我们需要定义一个简单的用户类和相应的功能。
```python
import hashlib
from getpass import getpass
# 用户类,包含姓名和加密后的密码
class User:
def __init__(self, username):
self.username = username
self.password_hash = None
# 设置密码时进行哈希处理
def set_password(self, password):
self.password_hash = hashlib.sha256(password.encode()).hexdigest()
# 数据结构(字典)用于存储用户信息
users = {}
def add_user():
username = input("Enter your username: ")
while username in users:
print("Username already exists.")
username = input("Choose a different username: ")
password = getpass("Enter your password: ")
user = User(username)
user.set_password(password)
users[username] = user
print("User added successfully.")
def login():
username = input("Enter your username for login: ")
if username not in users:
print("Invalid username or no account found.")
return
entered_password = getpass("Enter your password: ")
stored_password = users[username].password_hash
# 检查密码是否匹配
if hashlib.sha256(entered_password.encode()).hexdigest() == stored_password:
print("Login successful!")
else:
print("Incorrect password.")
# 主程序
if __name__ == "__main__":
choice = "add"
while choice.lower() in ["a", "add"]:
add_user()
choice = input("Do you want to add another user? (a/add for yes, any other key for no): ")
choice = "login"
while choice.lower() in ["l", "login"]:
login()
choice = input("Do you want to try logging in again? (l/login for yes, any other key for no): ")
```
在这个例子中:
- `User` 类用于表示用户,包含用户名和加密后的密码。
- `add_user` 函数让用户输入用户名和设置密码,然后将其添加到 `users` 字典中。
- `login` 函数让用户输入用户名,然后检查输入的密码与数据库中的密码哈希是否匹配。
阅读全文