Python-zipfile:如何为zipfile设置密码?

2 python zipfile

我在(sav.zip)中有一个zip文件,我正在尝试为其设置密码:

zf = zipfile.ZipFile(“ sav.zip”)

zf.setpassword(“ 1234”)

但是...我收到TypeError:预期的字节数,得到了str

我的错在哪里

Rol*_*ith 6

在文档中没有提到它,但是在Python 3上,密码应该是bytes,而不是str。所以:

zf.setpassword(b"1234")
Run Code Online (Sandbox Code Playgroud)

请注意,密码用于读取,不能用于写入!请参阅ZipFile.openPython 3中的文档字符串。

ZipFile类可以读“PKZIP 2.0”加密,这不被认为是非常强(它已经已知弱点 [PDF])。这可能是为什么目前(在python 2.7.13和3.6中)未在Python中实现编写它们的原因。

注意: zip文件上的密码所提供的保护可能不是很牢固,具体取决于您要使用它的用途。攻击者可以例如在不知道密码的情况下替换 zipfile中受密码保护的条目!参见例如关于security.stackexchange的此答案

注意2:例如winzip的最新版本可以使用AES加密压缩文件的内容。AFAIK,Python无法读取这些内容。

  • 我不这么认为:[`ZipFile.setpassword(pwd)`](https://docs.python.org/3/library/zipfile.html#zipfile.ZipFile.setpassword)将“ _pwd_”设置为要提取的默认密码加密文件”。它与创建受密码保护的zip文件无关。 (2认同)
  • ZipFile 库无法为 zip 文件设置密码,您必须使用 pyminizip:请参阅 /sf/ask/3328331331/?rq=1 (2认同)