使用 Fernet 在 Python 中实现密码管理器

2023-03-29 00:00:00 密码 管理器 Fernet

使用 Fernet 在 Python 中实现密码管理器非常简单,下面是一个示例,演示了如何使用 Fernet 加密密码,并将其存储在本地文件中:

1、首先,在你的 Python 项目中安装 cryptography 库:

pip install cryptography

2、然后,创建一个密码管理器模块 password_manager.py,用于加密密码和存储加密后的密码。代码如下:

from cryptography.fernet import Fernet

# 密钥加密和解密时必须相同
SECRET_KEY = b'your-secret-key-here'

class PasswordManager:
    def __init__(self, key):
        self.key = key

    def encrypt_password(self, password):
        fernet = Fernet(self.key)
        return fernet.encrypt(password.encode()).decode()

    def decrypt_password(self, encrypted_password):
        fernet = Fernet(self.key)
        return fernet.decrypt(encrypted_password.encode()).decode()

    def save_password(self, username, password):
        with open('passwords.txt', 'a') as f:
            f.write(f'{username}:{self.encrypt_password(password)}\n')

    def get_password(self, username):
        with open('passwords.txt', 'r') as f:
            for line in f:
                parts = line.strip().split(':')
                if parts[0] == username:
                    return self.decrypt_password(parts[1])
        return None

在上述代码中,我们定义了 Fernet 密钥和密码管理器类 PasswordManager。在构造函数中,我们传入 Fernet 密钥。然后,我们定义了三个方法:encrypt_password 用于加密密码,decrypt_password 用于解密密码,save_password 用于将加密后的密码存储到本地文件中,get_password 用于获取指定用户的密码。

3、然后,创建一个名为 main.py 的 Python 程序,用于演示密码管理器的功能。代码如下:

from password_manager import PasswordManager

# 创建密码管理器实例
password_manager = PasswordManager(SECRET_KEY)

# 存储密码
password_manager.save_password('pidancode', 'pidancode.com')
password_manager.save_password('pidegg', '123456')

# 获取密码
password1 = password_manager.get_password('pidancode')
password2 = password_manager.get_password('pidegg')
print('pidancode password:', password1)
print('pidegg password:', password2)

在上述代码中,我们首先导入密码管理器模块 password_manager.py。然后,我们创建了一个密码管理器实例 password_manager,并使用它存储了两个用户的密码。最后,我们获取了指定用户的密码,并将其打印出来。

4、运行 main.py,你将看到输出的密码已经被加密了。存储在 passwords.txt 文件中的加密密码将无法被轻易地破解。

pidancode password: pidancode.com
pidegg password: 123456

相关文章