Python中使用Fernet加密和解密文件

2023-03-29 00:00:00 文件 加密 解密

要在Python中使用Fernet加密和解密文件,您需要遵循以下步骤:

1、安装cryptography库:

pip install cryptography

2、导入必要的库:

from cryptography.fernet import Fernet
import os

3、生成密钥:

key = Fernet.generate_key()

这将生成一个随机密钥,用于加密和解密文件。您可以将此密钥保存在文件中,以便将来使用。

4、加密文件:

def encrypt_file(file_path, key):
    f = Fernet(key)
    with open(file_path, "rb") as file:
        file_data = file.read()
    encrypted_data = f.encrypt(file_data)
    with open(file_path, "wb") as file:
        file.write(encrypted_data)

这将读取指定路径的文件并将其加密,然后将加密的数据写回原始文件。

例如,如果您要加密名为“test.txt”的文件,您可以调用以下函数:

encrypt_file("test.txt", key)

5、解密文件:

def decrypt_file(file_path, key):
    f = Fernet(key)
    with open(file_path, "rb") as file:
        encrypted_data = file.read()
    decrypted_data = f.decrypt(encrypted_data)
    with open(file_path, "wb") as file:
        file.write(decrypted_data)

这将读取指定路径的文件并将其解密,然后将解密的数据写回原始文件。

例如,如果您要解密名为“test.txt”的文件,您可以调用以下函数:

decrypt_file("test.txt", key)

注意,要成功解密文件,您需要提供正确的密钥。否则,解密操作将失败。

以下是完整的示例代码:

from cryptography.fernet import Fernet
import os

# 生成密钥
key = Fernet.generate_key()

# 加密文件
def encrypt_file(file_path, key):
    f = Fernet(key)
    with open(file_path, "rb") as file:
        file_data = file.read()
    encrypted_data = f.encrypt(file_data)
    with open(file_path, "wb") as file:
        file.write(encrypted_data)

# 解密文件
def decrypt_file(file_path, key):
    f = Fernet(key)
    with open(file_path, "rb") as file:
        encrypted_data = file.read()
    decrypted_data = f.decrypt(encrypted_data)
    with open(file_path, "wb") as file:
        file.write(decrypted_data)

# 测试加密和解密
text = "pidancode.com 皮蛋编程"
with open("test.txt", "w") as file:
    file.write(text)

# 加密文件
encrypt_file("test.txt", key)

# 解密文件
decrypt_file("test.txt", key)

# 打印解密后的文件内容
with open("test.txt", "r") as file:
    decrypted_text = file.read()
    print(decrypted_text)

运行该代码将输出:

pidancode.com 皮蛋编程

相关文章