用Python编写一个简单的文件加密程序
发布时间:2023-12-04 12:14:20
下面是一个使用Python编写的简单文件加密程序的示例:
import hashlib
from Crypto.Cipher import AES
def encrypt_file(key, filename):
chunk_size = 64 * 1024
output_filename = filename + ".enc"
initialization_vector = hashlib.sha256(key.encode()).digest()[:16]
cipher = AES.new(key.encode(), AES.MODE_CBC, initialization_vector)
with open(filename, 'rb') as input_file:
with open(output_filename, 'wb') as output_file:
output_file.write(initialization_vector)
while True:
chunk = input_file.read(chunk_size)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += b' ' * (16 - len(chunk) % 16)
encrypted_chunk = cipher.encrypt(chunk)
output_file.write(encrypted_chunk)
def decrypt_file(key, filename):
chunk_size = 64 * 1024
output_filename = filename[:-4] # remove the ".enc" extension
with open(filename, 'rb') as input_file:
initialization_vector = input_file.read(16)
cipher = AES.new(key.encode(), AES.MODE_CBC, initialization_vector)
with open(output_filename, 'wb') as output_file:
while True:
chunk = input_file.read(chunk_size)
if len(chunk) == 0:
break
decrypted_chunk = cipher.decrypt(chunk)
output_file.write(decrypted_chunk.rstrip(b' '))
# 使用例子
key = "mysecretkey" # 加密密钥
filename = "example.txt" # 需要加密的文件名
encrypt_file(key, filename)
print("加密成功!加密后的文件保存为: " + filename + ".enc")
encoded_filename = filename + ".enc" # 需要解密的文件名
decrypt_file(key, encoded_filename)
print("解密成功!解密后的文件保存为: " + filename)
在这个示例中,我们使用了Python中的hashlib和Crypto库来实现文件加密功能。程序使用AES对称加密算法,密钥长度为256位。
该程序定义了两个函数:encrypt_file(key, filename)和decrypt_file(key, filename)。encrypt_file()函数接受一个密钥和一个文件名作为输入,将指定的文件进行加密,并将加密后的内容保存为原文件名加上.enc的后缀名。decrypt_file()函数接受一个密钥和一个被加密的文件名作为输入,将指定的文件进行解密,并将解密后的内容保存在原文件名(去掉.enc后缀)中。
在使用例子中,我们指定了一个密钥 mysecretkey 和一个需要加密的文件 example.txt。首先,我们将 example.txt 文件加密成 example.txt.enc 文件,并打印出加密后的文件名。然后,我们使用 example.txt.enc 文件来解密文件,并打印出解密后的文件名。
这是一个简单的文件加密程序示例,对于更加复杂和安全的加密需求,建议使用更专业的加密库和算法。
