[ misc 知识点 ] ZIP 伪加密原理
2026-08-22 20:05:38
一、zip文件三大件
要了解关于zip文件伪加密原理。首先要知道zip文件三大件。

二、关键字段:通用位标志
在①本地文件头和②中央目录文件头中都各有一个2字节的字段叫做通用位标志
这个字段的第0位就是加密标志:
| Bit 0 的值 | 含义 |
0 |
文件未加密 |
1 |
文件已加密 |
在十六进制中的体现:
1 | 偏移量(相对于各自头部起始位置): |
三、伪加密实质
只改标志,不做真正加密
伪加密相对于在门上贴了个”已上锁”的牌子,但门根本没锁。只是虚张声势。
解压软件(比如 WinRAR)看到牌子就问你要钥匙(密码),但实际上门是开着的。
真正的zip加密:
- 标志位 bit 0 设为 1 ✅
- 文件数据经过加密算法处理,变成密文 ✅
- 解压时需要密码来解密 ✅
zip伪加密:
- 标志位 bit 0 被手动改为 1 ✅(骗解压软件”我加密了”)
- 文件数据根本没有经过任何加密,还是原始数据 ❌
- 解压软件看到标志位=1,就弹出密码输入框,但实际上没有正确的密码 ❌
四、修复操作
修复操作本质是:把被篡改的标志位改回 00 00
两个位置可能被篡改:
| 位置 | 修复方法 |
| 中央目录区的通用位标志 | 将 01 00(或 09 00等奇数)改回 00 00(或 08 00等偶数) |
| 本地文件头的通用位标志 | 同上 |
常见的伪加密有三种情况:

五、区分真加密 vs 伪加密
| 判断方法 | 操作 |
| 用7-Zip打开 | 7-Zip 有时能直接解压伪加密文件 (因为它实际尝试解压数据而不完全依赖标志位) |
用binwalk提取 |
binwalk -e file.zip可能直接提取出数据 |
| 用010编辑器查看 | 对比Local File Header和Central Directory的标志位是否一致。若不一致,大概率是伪加密 |
用ZipCenOp.jar |
专门检测和修复 ZIP 伪加密的工具:java -jar ZipCenOp.jar r file.zip |