pycryptodome 加密文件夹
时间: 2023-08-26 13:04:55 浏览: 124
对于加密文件夹,可以使用 PyCryptodome 模块中的 AES 加密算法。以下是一个示例代码:
```python
from Crypto.Cipher import AES
import os
def encrypt_file(key, in_filename, out_filename=None, chunksize=64*1024):
"""使用 AES 加密算法加密文件"""
if not out_filename:
out_filename = in_filename + '.enc'
iv = os.urandom(16)
encryptor = AES.new(key, AES.MODE_CBC, iv)
with open(in_filename, 'rb') as infile:
with open(out_filename, 'wb') as outfile:
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))
return out_filename
```
在代码中,我们首先生成一个随机的 16 字节长度的“初始向量”(initialization vector,IV)值,用于增强加密的随机性。然后,我们指定访问权限控制的密钥并创建一个 AES 对象,在加密模式为 CBC(Cipher Block Chaining)的情况下,通过调用该对象的 encrypt 方法对文件进行加密。加密后的文件名将在原文件名的基础上添加一个 .enc 后缀,并将初始向量与加密后的数据一起编写到输出文件中。
解密加密后的文件夹与文件的过程大致相同,只需使用相同的密钥和初始向量创建 AES 对象,并调用对象的 decrypt 方法进行解密即可。
阅读全文