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

时间:2017-04-16 17:26:15

标签: python zipfile

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

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

zf.setpassword( “1234”)

但是...我得到一个TypeError:期望字节,得到str

我的错误在哪里?

1 个答案:

答案 0 :(得分:4)

文档中未提及,但在Python 3中,密码应为bytes,而不是str。所以:

zf.setpassword(b"1234")

请注意,密码用于阅读,而不是写作!请参阅Python 3中ZipFile.open的docstring。

ZipFile类可以读取“pkzip 2.0”加密,这被认为不是很强(它有known weaknesses [pdf])。这可能是编写它们当前不是用Python实现的(从Python 2.7.13和3.6开始)的原因。

注意:密码在zipfile上提供的保护可能不是很强,具体取决于您要使用它的目的。攻击者可以例如在zipfile 中替换受密码保护的条目,而不知道密码!参见例如this answer在security.stackexchange上。

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