python - 压缩文件 : how to set a password for a Zipfile?

标签 python zip python-zipfile

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

zf = zipfile.ZipFile("sav.zip")
zf.setpassword("1234")

但我得到了 TypeError: expected Bytes, got str .

我的错误在哪里?

最佳答案

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

zf.setpassword(b"1234")

请注意,密码用于读取,而非写入!请参阅 Python 3 中 ZipFile.open 的文档字符串。

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

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

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

关于python - 压缩文件 : how to set a password for a Zipfile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59191260/

相关文章:

Python GUI 创建

python - shuffle vs permute numpy

python pandas-可以使用where(max())比较相同形状的3个dfs?这是一个掩蔽问题吗?

javascript - 使用 nsIZipWriter 或其他将字符串压缩为字符串?

java - 在 Android 中加密和解密 zip 文件?

python - 打开不受支持的压缩类型的 zipfile 静默返回空文件流,而不是抛出异常

python - 将高斯过程模型拟合到 PCA。预测看起来很错误

angularjs - 将 zip 文件从 Node api 流式传输到 Angular

python - 在 python 中使用 zipfile 模块排除目录被压缩

python - 在 zipfile 中的文件上使用 numpy.load