You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python3解压非PKZIP算法加密的密码保护Zip文件?

解决Python解压AES加密Zip包的密码错误问题

嘿,这个坑很多人都踩过!你用Ubuntu归档管理器创建的加密Zip包,默认用的是AES加密算法,但Python标准库的zipfile模块只支持老旧的ZipCrypto加密——这俩完全不兼容,所以哪怕你密码输对了,也会被判定成“密码错误”。

下面给你两个靠谱的解决方案:

方案一:用pyzipper库(最推荐,纯Python实现)

pyzipper是zipfile的增强版,专门加了AES加密解密的支持,用法和原生zipfile几乎一模一样,不用改太多代码:

  1. 先安装库:
pip install pyzipper
  1. 修改你的代码,替换成pyzipper就行:
import pyzipper

# 用with语句更安全,自动关闭文件
with pyzipper.ZipFile('archive.zip') as zip_file:
    zip_file.extractall(pwd=b'1')  # 密码还是传bytes类型,和原来一样

方案二:调用7-Zip命令行(适合不想装Python库的场景)

如果你的Ubuntu已经装了p7zip-full(没装的话用sudo apt install p7zip-full装一下),可以直接通过Python调用7-Zip来解压,它完美支持AES加密:

import subprocess

# 执行7-Zip解压命令,参数解释:
# x = 解压文件;-p1 = 密码是1;-o. = 解压到当前目录;-y = 自动确认覆盖
subprocess.run(
    ['7z', 'x', 'archive.zip', '-p1', '-o.', '-y'],
    check=True  # 如果命令执行失败会抛出异常
)

额外小提示

  • 要是你用原生zipfile能解压成功的加密Zip,那它肯定是用ZipCrypto算法创建的(比如Windows自带的压缩工具),但这种算法安全性很差,现在主流工具默认都用AES了。
  • pyzipper还能创建AES加密的Zip包,要是以后需要的话,只要在创建时指定encryption=pyzipper.WZ_AES参数就行。

内容的提问来源于stack exchange,提问作者ikudyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:58:26