用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的文件加密,并打印出提示信息。接着,通过读取密钥文件解密该文件,并再次打印提示信息。
请注意,上述代码仅作为简单加密示例,实际应用中可能需要更复杂的加密算法和更严谨的实现。
