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

使用Python实现一个简单的文件加密程序

发布时间:2023-12-04 13:24:30

以下是使用Python实现一个简单的文件加密程序的示例:

import os
from cryptography.fernet import Fernet

def generate_key():
    """
    生成一个随机的加密密钥并保存到文件中
    """
    key = Fernet.generate_key()
    with open("encryption_key.key", "wb") as key_file:
        key_file.write(key)

def load_key():
    """
    从文件中加载加密密钥
    """
    return open("encryption_key.key", "rb").read()

def encrypt_file(file_path, key):
    """
    使用给定的密钥加密文件
    """
    fernet = Fernet(key)
    with open(file_path, "rb") as file:
        file_data = file.read()
    encrypted_data = fernet.encrypt(file_data)
    with open(file_path, "wb") as encrypted_file:
        encrypted_file.write(encrypted_data)

def decrypt_file(file_path, key):
    """
    使用给定的密钥解密文件
    """
    fernet = Fernet(key)
    with open(file_path, "rb") as encrypted_file:
        encrypted_data = encrypted_file.read()
    decrypted_data = fernet.decrypt(encrypted_data)
    with open(file_path, "wb") as decrypted_file:
        decrypted_file.write(decrypted_data)

# 生成密钥
generate_key()

# 加载密钥
key = load_key()

# 加密文件
file_to_encrypt = "example.txt"
encrypt_file(file_to_encrypt, key)

# 解密文件
file_to_decrypt = "example.txt"
decrypt_file(file_to_decrypt, key)

上述代码使用了cryptography库中的Fernet类来实现文件加密和解密的功能。首先,使用generate_key函数生成一个随机的加密密钥,并将其保存到名为encryption_key.key的文件中。然后,使用load_key函数加载密钥。接下来,使用encrypt_file函数将指定的文件加密。最后,使用decrypt_file函数将加密后的文件解密。

你可以将需要加密的文件保存为example.txt,然后运行上述代码,它将加密该文件,并将加密后的文件保存在同一目录下。然后,程序将使用相同的密钥对加密后的文件进行解密,并将解密结果保存在同一目录下。

请注意,由于使用的是对称加密算法,所以加密和解密所使用的密钥必须相同。确保在解密文件时使用与加密相同的密钥。另外请注意保护好密钥文件,以防止未经授权的人访问密钥。