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

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

发布时间:2024-01-12 10:53:55

以下是一个简单的文件加密器的Python实现,同时附带了一个使用示例。

import os
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):
    fernet = Fernet(key)
    
    with open(filename, 'rb') as file:
        original_file = file.read()
        
    encrypted = fernet.encrypt(original_file)
    
    with open(filename, 'wb') as encrypted_file:
        encrypted_file.write(encrypted)

# 解密文件
def decrypt_file(filename, key):
    fernet = Fernet(key)
    
    with open(filename, 'rb') as encrypted_file:
        encrypted = encrypted_file.read()
        
    decrypted = fernet.decrypt(encrypted)
    
    with open(filename, 'wb') as decrypted_file:
        decrypted_file.write(decrypted)

# 使用示例
if __name__ == '__main__':
    # 生成密钥文件
    generate_key()
    
    # 加密文件
    key = load_key()
    encrypt_file('example.txt', key)
    print("文件已加密。")
    
    # 解密文件
    key = load_key()
    decrypt_file('example.txt', key)
    print("文件已解密。")

上述代码使用了cryptography库中的Fernet进行文件加密和解密。通过generate_key函数生成一个密钥,并保存到名为key.key的文件中。load_key函数则用于读取密钥文件。

encrypt_file函数用于加密指定的文件。它首先使用传入的密钥生成Fernet对象,然后读取要加密的文件内容。加密后的内容保存到同名文件中。

decrypt_file函数则是用于解密文件。它首先使用传入的密钥生成Fernet对象,然后读取已加密的文件内容。解密后的内容保存到同名文件中。

在使用示例中,首先生成了密钥文件,然后将名为example.txt的文件加密,并打印出提示信息。接着,通过读取密钥文件解密该文件,并再次打印提示信息。

请注意,上述代码仅作为简单加密示例,实际应用中可能需要更复杂的加密算法和更严谨的实现。