欢迎访问宙启技术站
智能推送

使用Python的User()类进行用户密码加密和验证

发布时间:2023-12-23 21:59:17

Python中可以使用User()类进行用户密码加密和验证。User()类是Python的内置类之一,用于管理用户的身份验证和权限控制。下面是使用User()类进行用户密码加密和验证的示例代码:

import getpass
from passlib.hash import pbkdf2_sha256 as hash_alg
from passlib.hash import bcrypt as bcrypt_alg

class User:
    def __init__(self, username, password):
        self.username = username
        self.password = self._encrypt_password(password)

    def _encrypt_password(self, password):
        # 使用PBKDF2算法加密密码
        return hash_alg.encrypt(password)

    def verify_password(self, password):
        # 验证密码是否正确
        return hash_alg.verify(password, self.password)

    def set_password(self, new_password):
        # 修改密码
        self.password = self._encrypt_password(new_password)

    def __repr__(self):
        return f"User('{self.username}')"

# 创建一个新用户
username = input("请输入用户名: ")
password = getpass.getpass("请输入密码: ")
user = User(username, password)
print(f"用户 {user.username} 创建成功!")

# 验证用户密码
login_username = input("请输入登录用户名: ")
login_password = getpass.getpass("请输入登录密码: ")
if user.username == login_username and user.verify_password(login_password):
    print("登录成功!")
else:
    print("用户名或密码错误!")

# 修改密码
new_password = getpass.getpass("请输入新密码: ")
user.set_password(new_password)
print("密码修改成功!")

# 验证新密码
login_password = getpass.getpass("请输入登录密码: ")
if user.verify_password(login_password):
    print("登录成功!")
else:
    print("用户名或密码错误!")

在上述示例代码中,User类有几个方法:

- __init__(self, username, password): 实例化User对象时,需要提供用户名和密码。在构造函数中,密码会被加密存储。

- _encrypt_password(self, password): 使用PBKDF2算法加密密码。这里使用了passlib库的pbkdf2_sha256算法。

- verify_password(self, password): 验证密码是否正确。通过将用户输入的密码与已加密的存储密码进行比较来实现。

- set_password(self, new_password): 修改密码。将新密码加密后替换存储的密码。

- __repr__(self): 返回User对象的字符串表示形式。

在使用示例中,我们首先创建一个新用户,并要求用户输入用户名和密码。然后,我们使用用户输入的用户名和密码进行登录验证。如果验证通过,我们输出登录成功的消息;否则,输出用户名或密码错误的消息。接下来,我们要求用户输入新的密码,并使用新密码修改User对象的密码。最后,再次使用新密码进行登录验证。

需要注意的是,为了安全起见,我们在输入密码时使用了getpass模块的getpass函数,以隐藏密码的输入。此外,我们使用了passlib库提供的PBKDF2和Bcrypt算法进行密码加密和验证。这些算法是经过广泛测试和评估的,可以提供更高的安全性。

总结:上述示例代码演示了如何使用Python的User()类进行用户密码加密和验证。通过对用户输入的密码进行加密存储,并在验证时将用户输入的密码与已加密的密码进行比较,可以提高用户密码的安全性。此外,修改密码时也应该重新加密存储,以确保密码的更新及时生效。