python生成一份需要密码才能打开的zip文件
时间: 2024-09-10 16:09:33 浏览: 40
在Python中,你可以使用`zipfile`模块来创建并加密ZIP文件,这通常涉及到使用`zipfile`和`zlib`库以及加密算法,如AES。这里是一个基本的例子,使用`pycryptodome`库来进行AES加密:
```python
from zipfile import ZipFile
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import os
# 创建AES加密器
key = b'This is a secret key! ' # 需要设置一个密钥,长度应该是16、24或32字节
cipher = AES.new(key, AES.MODE_EAX)
def encrypt_file(file_path, password):
cipher_text, tag = cipher.encrypt_and_digest(open(file_path, 'rb').read())
encrypted_data = cipher.nonce + tag + cipher_text
with open('encrypted.zip', 'wb') as zipf:
zipf.write(encrypted_data)
# 添加元数据,包括解密密码和文件名
zipf.writestr("password.txt", password.encode()) # 密码写入单独的文本文件
zipf.writestr(os.path.basename(file_path), '')
def main():
file_to_encrypt = "yourfile.txt" # 要加密的文件路径
password = input("请输入加密密码: ") # 用户输入的密码
encrypt_file(file_to_encrypt, password)
if __name__ == "__main__":
main()
```
当你运行这个程序并输入密码时,它会创建一个名为`encrypted.zip`的文件,并将指定的文件加密后包含在其中。为了打开这个文件,用户需要知道密码,从`password.txt`文件读取。