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

python编写一个简单的文件加密器

发布时间:2023-12-12 17:29:47

文件加密器是一种用于将文件转换为无法读取或理解的加密格式的程序。Python为我们提供了处理文件和加密的强大功能。在下面的代码中,我将展示一个简单的文件加密器的实现,并提供一个使用例子。

import os
from cryptography.fernet import Fernet

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

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

def encrypt_file(file_path, key):
    """
    加密文件
    """
    fernet = Fernet(key)
    with open(file_path, "rb") as file:
        original_file_data = file.read()
    encrypted_data = fernet.encrypt(original_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()

# 使用加密器加密文件
encrypt_file("example.txt", key)

# 使用加密器解密文件
decrypt_file("example.txt", key)

在上面的代码中,首先我们使用generate_key()函数生成一个密钥,并将其保存到key.key文件中。然后,使用load_key()函数从key.key文件中加载密钥。

为了加密文件,我们使用encrypt_file()函数。该函数接受一个文件路径和密钥作为输入,使用Fernet加密对象初始化,并使用密钥加密文件的内容。最后,将加密后的数据写入同一文件中,覆盖其原有的内容。

为了解密文件,我们使用decrypt_file()函数。该函数接受一个文件路径和密钥作为输入,同样使用Fernet加密对象初始化,并使用密钥解密文件的内容。最后,将解密后的数据写入同一文件中,覆盖其密文内容。

可以通过将需要加密的文件放在脚本所在目录中,将文件路径传递给encrypt_file()函数来加密文件。同样,可以使用decrypt_file()函数解密文件。

下面是一个使用例子:

# 生成密钥
generate_key()

# 加载密钥
key = load_key()

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

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

在上面的例子中,我们假设脚本和需要加密的文件(例如example.txt)位于同一目录中。首先,我们生成一个密钥,并将其保存到key.key文件中。然后,加载密钥并使用它来加密example.txt文件。最后,我们再次使用相同的密钥来解密example.txt文件。

请注意,为了实际运行上述代码,你需要安装cryptography库,可以使用以下命令安装:

pip install cryptography

希望以上代码和使用例子能够帮助你理解和创建一个简单的文件加密器。