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

使用cryptography.fernet保护你的Python数据库:实现数据加密与解密

发布时间:2023-12-27 23:04:38

在Python中,可以使用cryptography模块中的Fernet对象来加密和解密数据库中的数据。Fernet是一种对称加密算法,它通过使用相同的密钥进行加密和解密,可以很好地保护数据的安全性。

首先,我们需要安装cryptography模块。可以使用以下命令来安装:

pip install cryptography

接下来,我们可以编写一个示例程序来演示如何使用cryptography.fernet来保护数据库中的数据。

from cryptography.fernet import Fernet

# 生成密钥
def generate_key():
    key = Fernet.generate_key()
    with open("key.txt", "wb") as key_file:
        key_file.write(key)

# 加载密钥
def load_key():
    with open("key.txt", "rb") as key_file:
        key = key_file.read()
    return key

# 加密数据
def encrypt_data(data, key):
    fernet = Fernet(key)
    encrypted_data = fernet.encrypt(data.encode())
    return encrypted_data

# 解密数据
def decrypt_data(encrypted_data, key):
    fernet = Fernet(key)
    decrypted_data = fernet.decrypt(encrypted_data)
    return decrypted_data.decode()

# 示例程序
def main():
    # 加载密钥
    key = load_key()

    # 加密数据
    data = "Hello, world!"
    encrypted_data = encrypt_data(data, key)
    print("Encrypted data:", encrypted_data)

    # 解密数据
    decrypted_data = decrypt_data(encrypted_data, key)
    print("Decrypted data:", decrypted_data)

if __name__ == "__main__":
    main()

在示例程序中,我们首先定义了生成密钥的方法generate_key和加载密钥的方法load_key。我们将密钥保存到一个名为key.txt的文件中。

然后,我们定义了两个方法encrypt_data和decrypt_data来加密和解密数据。在加密方法中,我们首先通过加载的密钥创建一个Fernet对象,然后使用这个对象来加密数据。在解密方法中,我们使用同样的密钥和Fernet对象来解密数据。

最后,在示例程序的主函数main中,我们演示了如何使用这些方法来保护数据库中的数据。我们首先加载密钥,然后加密一个字符串类型的数据,然后再解密这个加密后的数据并打印出来。

可以看到,使用cryptography.fernet来保护Python数据库中的数据非常简单。通过生成密钥、加载密钥、加密数据和解密数据这几个步骤,我们可以确保数据库中的敏感数据得到了很好的保护。