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

简单易懂的教程:Python中使用cryptography.fernet加密和解密文件

发布时间:2023-12-27 23:05:08

在Python中,使用cryptography.fernet模块可以很方便地对文件进行加密和解密。本教程将向您介绍如何使用cryptography.fernet模块加密和解密文件,并提供一个简单的使用示例。

首先,您需要安装cryptography模块。您可以使用以下命令在终端上安装它:

pip install cryptography

一旦安装完毕,您可以开始使用cryptography.fernet模块了。

下面是一个简单的示例,展示了如何使用cryptography.fernet加密和解密文件:

from cryptography.fernet import Fernet

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

# 加载密钥
def load_key():
    return open('key.key', 'rb').read()

# 加密文件
def encrypt_file(filename, key):
    f = Fernet(key)

    with open(filename, 'rb') as file:
        file_data = file.read()
        encrypted_data = f.encrypt(file_data)

    with open(filename, 'wb') as file:
        file.write(encrypted_data)

# 解密文件
def decrypt_file(filename, key):
    f = Fernet(key)

    with open(filename, 'rb') as file:
        encrypted_data = file.read()
        decrypted_data = f.decrypt(encrypted_data)

    with open(filename, 'wb') as file:
        file.write(decrypted_data)

# 生成密钥
generate_key()

# 加载密钥
key = load_key()

# 加密文件
encrypt_file('plain.txt', key)

# 解密文件
decrypt_file('plain.txt', key)

上述示例中,首先我们定义了三个函数:generate_key(), load_key()和encrypt_file(), decrypt_file()。

generate_key()函数用来生成一个加密文件需要的密钥,并将其写入名为'key.key'的文件中。

load_key()函数用来加载密钥,即从'key.key'文件中读取密钥数据。

encrypt_file()函数用来加密文件。它首先通过提供的密钥构建一个Fernet对象,然后读取要加密的文件数据,并使用Fernet对象加密数据。最后,将加密后的数据写入原始文件中。

decrypt_file()函数用来解密文件。它的工作方式与encrypt_file()函数类似,只是使用Fernet对象来解密文件数据,并将解密后的数据写回原始文件。

在示例的最后,我们先调用generate_key()函数生成一个密钥,然后使用load_key()函数将其加载。接下来,我们使用encrypt_file()函数对名为'plain.txt'的文件进行加密,并使用decrypt_file()函数解密该文件。

请确保在运行示例代码之前,您已经创建了一个名为'plain.txt'的文件,并在其中包含了一些文本数据。

当您运行这段代码时,您将看到'plain.txt'文件已经被加密和解密,而且只有使用正确的密钥才能解密它。

这就是使用cryptography.fernet模块加密和解密文件的简单教程。希望它能帮助您更好地了解如何在Python中进行文件加密和解密。