python生成带密码的zip
时间: 2024-09-09 19:12:03 浏览: 45
在Python中,你可以使用`zipfile`模块来创建包含文件并加密的ZIP文件,其中可以包含一个隐藏的文本文件存储密码。这里是一个基本的例子:
```python
import zipfile
from Crypto.Cipher import AES
# 定义加密函数
def encrypt_file(file_path, key):
cipher = AES.new(key.encode(), AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(open(file_path, 'rb').read())
return cipher.nonce, ciphertext, tag
# 定义密码和要压缩的文件名
password = b'some_secret_password' # 使用 bytes 类型,因为AES需要加密密钥是 bytes
file_to_encrypt = 'file_to_compress.txt'
# 加密文件内容
nonce, encrypted_data, tag = encrypt_file(file_to_encrypt, password)
# 创建一个ZipFile对象,并设置加密选项
with zipfile.ZipFile('encrypted.zip', 'w', zipfile.ZIP_DEFLATED, allowZip64=True) as zipf:
# 添加一个隐藏的文本文件存储密码
with zipf.open('.password.txt', 'w', compression=zipfile.ZIP_STORED) as password_file:
password_file.write(str(nonce).encode()) # 将非戸转换回字符串形式写入文件
# 使用加密后的数据添加文件到ZIP
zip_info = zipfile.ZipInfo(file_to_encrypt)
zip_info.filename = '.' + file_to_encrypt # 隐藏文件名
zip_info.compress_type = zipfile.ZIP_DEFLATED
zip_info.create_system = 3 # ZIP64 支持
zip_info.set_password(password) # 设置加密密码
zipf.writestr(zip_info, encrypted_data)
阅读全文