压缩文件夹的AES加密的python
时间: 2024-05-11 11:14:01 浏览: 16
下面给出一个压缩文件夹并使用AES加密的Python示例代码:
```python
import os
import zipfile
from Crypto.Cipher import AES
def compress_and_encrypt_folder(src_folder, dest_file, password):
# 压缩文件夹
zipf = zipfile.ZipFile(dest_file, 'w', zipfile.ZIP_DEFLATED)
for root, dirs, files in os.walk(src_folder):
for file in files:
zipf.write(os.path.join(root, file))
zipf.close()
# 加密压缩文件
with open(dest_file, 'rb') as f:
data = f.read()
# 在数据末尾添加填充
block_size = AES.block_size
padding_size = block_size - len(data) % block_size
padding = bytes([padding_size] * padding_size)
data += padding
# 使用AES加密
cipher = AES.new(password, AES.MODE_CBC)
encrypted = cipher.iv + cipher.encrypt(data)
# 将加密后的数据写入文件
with open(dest_file, 'wb') as f:
f.write(encrypted)
# 示例用法
src_folder = 'my_folder'
dest_file = 'my_folder.zip'
password = b'my_password'
compress_and_encrypt_folder(src_folder, dest_file, password)
```
说明:
1. 使用`zipfile`模块进行文件夹压缩;
2. 使用`Crypto.Cipher`模块进行AES加密;
3. 在加密数据末尾添加填充,以保证数据长度为AES分组大小的整数倍;
4. 在加密数据前添加IV(Initialization Vector)向量,以增加加密安全性;
5. 在加密后的数据中,IV向量的前16个字节即为IV向量本身,后面的字节为加密后的数据。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)