使用AES对多个文件夹数据加密的python代码
时间: 2023-12-31 07:04:12 浏览: 22
以下是使用AES对多个文件夹数据加密的Python代码示例:
```python
import os
import shutil
from Crypto.Cipher import AES
# AES加密函数
def encrypt_file(key, in_filename, out_filename=None, chunksize=64*1024):
if not out_filename:
out_filename = in_filename + '.enc'
iv = os.urandom(16)
encryptor = AES.new(key, AES.MODE_CBC, iv)
filesize = os.path.getsize(in_filename)
with open(in_filename, 'rb') as infile:
with open(out_filename, 'wb') as outfile:
outfile.write(filesize.to_bytes(8, byteorder='big'))
outfile.write(iv)
while True:
chunk = infile.read(chunksize)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += b' ' * (16 - len(chunk) % 16)
outfile.write(encryptor.encrypt(chunk))
# 遍历文件夹并加密
def encrypt_folder(key, folder_path):
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
encrypt_file(key, file_path)
# 主函数
if __name__ == '__main__':
key = b'mysecretpassword' # 加密密钥
folder_paths = ['/path/to/folder1', '/path/to/folder2'] # 需要加密的文件夹路径
for folder_path in folder_paths:
encrypted_folder_path = folder_path + '_encrypted'
shutil.copytree(folder_path, encrypted_folder_path) # 复制文件夹
encrypt_folder(key, encrypted_folder_path) # 加密文件夹数据
```
说明:
1. 加密函数使用了AES算法,通过传入密钥,输入文件路径和输出文件路径,对文件进行加密。
2. 遍历文件夹并对文件进行加密,需要传入加密密钥和文件夹路径。
3. 主函数中,指定需要加密的文件夹路径,复制文件夹并加密数据。加密后的文件夹会在原文件夹路径的基础上添加"_encrypted"后缀。