我在(sav.zip)中有一个压缩文件,我正在尝试为它设置一个密码:
zf = zipfile.ZipFile("sav.zip")
zf.setpassword("1234")
但是我有一个TypeError: expected Bytes, got str
。
我的错误在哪里?
发布于 2017-04-17 01:30:43
文档中没有提到,但是在Python3上,密码应该是bytes
,而不是str
。所以:
zf.setpassword(b"1234")
请注意,密码仅用于读取,而不用于写入!请参阅Python3中ZipFile.open
的文档字符串。
ZipFile
类可以读取“pkzip2.0”加密,这被认为不是很强(它有known weaknesses pdf)。这可能是目前(从Python2.7.13到3.6)没有在Python中实现它们的原因。
注意: zipfile上的密码提供的保护可能不是很强,这取决于您想要使用它做什么。例如,攻击者可以在不知道密码的情况下替换zipfile中受密码保护的条目!例如,参见security.stackexchange上的this answer。
Note2:更新版本的winzip可以使用AES来加密压缩文件的内容。AFAIK,Python不能读取这些。
https://stackoverflow.com/questions/43439979
复制相似问题