把表格改个密码塞进 ZIP 发过去,感觉很安全?如果是 ZipCrypto,打开可能只要几秒。这个 1989 年的算法在今天的算力下形同虚设。
ZIP 加密的两个算法
ZIP 格式内部支持两种加密:
| 算法 | 诞生 | 状态 |
|---|---|---|
| ZipCrypto(Traditional) | 1989 | 已被完全攻破,不要用 |
| AES-256 | 2002(PKWARE SES) | 当前标准,安全可信 |
同一个 .zip 扩展名,两个完全不同的加密强度——ZIP 文件头里的一个 flag bit 决定用哪个。
为什么 ZipCrypto 不安全
算法本身有缺陷
ZipCrypto 用 3 个 32 位寄存器做流加密,密钥调度极其简单。已知明文攻击下,知道明文前 12 字节(header 部分)就能完全恢复内部状态,接着解出全部数据。
已知明文攻击的威胁
攻击者只需要压缩包内任意一个文件的一小段明文。现实中极易获得:
- 压缩包里有一张 JPEG,JPEG 开头是固定的
FF D8 FF头 - 压缩包里有 PDF,开头永远是
%PDF- - 压缩包里有 Excel,开头是 ZIP 魔数
PK\x03\x04(xlsx 本身就是 ZIP) - 压缩包里有你之前发给对方的文件,对方本就有明文
一个 Windows 工具 bkcrack 能在几秒到几小时内(看明文长度)完全破 ZipCrypto,不需要暴力枚举密码——直接解密数据。
密码长度也救不了
就算你的密码是 32 位随机字符——ZipCrypto 的已知明文攻击不是爆破密码,而是直接利用算法缺陷恢复密钥流。密码再长也没用。
为什么 AES-256 安全
AES-256 是当前密码学界默认的强加密算法:
- 密钥空间 2^256,穷举不可行
- 没有已知实用攻击
- 美国政府 TOP SECRET 级别加密标准
在 ZIP 里 AES-256 实现是 WinZip 于 2002 年推出的扩展(AE-2 格式),PKWARE 在 APPNOTE 里收录。主流工具都支持:7-Zip、WinRAR、Bandizip、The Unarchiver 等。
强密码(16 位随机,含大小写数字符号)+ AES-256 的 ZIP 在可预见的未来都打不开。
生成时怎么选
命令行工具的默认值不同:
| 工具 | 默认算法 |
|---|---|
zip -e(macOS/Linux 原生) | ZipCrypto ❌ |
7z a -p | AES-256 ✓ |
| WinRAR | ZipCrypto(需手动勾 AES) |
| 7-Zip GUI | AES-256(ZIP 格式选 AES-256) |
| Bandizip | AES-256 |
| Windows 资源管理器 | 不支持密码 |
记住:zip -e 命令看起来是加密了,实际上是 ZipCrypto——生产环境别用。
验证一个 ZIP 的加密类型
7z l -slt 查看细节:
$ 7z l -slt secret.zip | grep Method
Method = ZipCrypto ← 不安全
或
Method = AES-256 Deflate ← 安全
在 Windows 下 PeaZip、Bandizip 等工具详情面板也能看到。
打开兼容性的权衡
AES-256 ZIP 的最大问题:不是所有解压工具都支持。
| 工具 | AES-256 支持 |
|---|---|
| 7-Zip(全平台) | ✓ |
| WinRAR | ✓ |
| Bandizip | ✓ |
| Windows 资源管理器(10/11) | ✗(只能看到文件列表不能解) |
| macOS 归档实用工具 | ✗(需安装 The Unarchiver 或 Keka) |
| iOS / Android 系统 | 部分支持 |
结论:发给技术用户随便发;发给普通同事,附一句”用 7-Zip 打开”。或者干脆用 7z 格式——它加密方案和兼容性都更一致。
文件名也要加密吗
默认 ZIP 加密只加密内容,文件名和目录结构明文。这暴露信息:
└── 财务报告/
├── 2026Q1-营收.xlsx ← 文件名可见
├── 员工工资表.xlsx
└── 合同-张三.pdf
即使打不开也能看到有什么。要隐藏文件名:
- 7-Zip:选 7z 格式,勾”加密文件名”
- RAR:勾”加密文件名”
- ZIP:原生 ZIP 不支持加密头,少数工具用扩展实现,兼容性差
敏感场景(法务、财务、人事)推荐直接用加密 7z 或 RAR,别用 ZIP。
密码怎么传
密码和文件必须分不同渠道:
- 邮件发文件、短信/IM 发密码
- IM 发文件、电话口述密码
- 云盘分享、密码贴评论区之外的地方
同一封邮件带密码,攻击者拿到邮件等于文件+密码一起拿到——加密白做了。
ZIP 密码强度建议
- 对抗爆破:12 位以上随机(大小写数字符号),熵 70+ 位
- 常见弱密码:公司名+年份、生日、
123456、password——字典攻击几秒破 - 助记词方案:
correct-horse-battery-staple-042好记又安全 - 一次一密:每次传文件换密码,密码管理器生成+存档
快速创建加密 ZIP
选文件上传,设置密码(建议 12 位以上随机),算法选 AES-256——浏览器本地加密打包,文件不上传服务器。生成的 ZIP 在 7-Zip / WinRAR 等支持 AES 的解压工具里都能打开。