原始 DEFLATE (.deflate)

IETF 标准

DEFLATE 是计算历史上应用最广泛的无损数据压缩算法,三十多年来一直为 ZIP 归档、GZIP 流、PNG 图像和 HTTP 网络压缩提供动力。

将 GZIP 转换为 DEFLATE

免费的浏览器端 GZIP 转 DEFLATE 转换器。在您的设备上即时转换文件。

检查与元数据

操作系统和文件分析器通过检查开头的二进制字节序列来识别 DEFLATE 文件:

选择或将文件拖放到此处

隐私保护 - 文件不会离开您的设备

或粘贴 Ctrl+V
零网络传输隐私保证: 上传至外部服务器的数据为 0 字节。所有处理均在您的浏览器沙箱中本地完成。

字节级文件头签名 (魔数)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 DEFLATE 文件:

十六进制签名 (偏移量 0):

原始 DEFLATE 没有固定签名;zlib 封装流以可变的 CMF/FLG 字节开头

ASCII 表示形式: 没有固定签名

标准化: IETF RFC 1951 / RFC 1950(zlib)

技术规格

容器架构原始 RFC 1951 比特流,或带 2 字节文件头和 Adler-32 校验码的 RFC 1950 zlib 封装流
压缩方式LZ77 滑动字典(窗口最大为 32 KB),结合动态或静态霍夫曼熵编码
字节序小端位打包顺序
色彩空间不适用(数据压缩流)
通道与结构原始二进制或文本数据流
最大尺寸流长度不限
透明度100% 按位精确地无损还原数据
流式传输与渐进式加载基于数据块的比特流支持任意长度的连续字节流式处理

技术对比矩阵:DEFLATE 对比同类产品

技术属性DEFLATE (当前)GZBROTLIZSTD
标准化IETF RFC 1951(原始格式)/ RFC 1950(zlib)IETF RFC 1952(Gzip)IETF RFC 7932(Brotli)IETF RFC 8878(Zstandard)
滑动窗口最大 32 千字节最大 32 千字节最高 16 兆字节最高 2 吉字节
校验和模式Adler-32(在 zlib 包装器中)CRC-32(在 gzip 包装器中)流中未内置校验和xxHash64(64 位快速哈希)
日常使用PNG 图像、PDF 流、ZIPUnix .tar.gz、HTTP gzip网络字体 (WOFF2)、HTTP brLinux 内核、数据库、游戏

常见损坏模式与十六进制恢复指南

解压失败,提示"Z_DATA_ERROR: incorrect data check"(Z_DATA_ERROR:数据检查不正确)。

根本原因: zlib 包装流末尾的 4 字节 Adler-32 校验和不匹配。

恢复方法: 使用原始 inflate 绕过 Adler-32 验证,或使用 File2File.app Deflate 恢复进行修复。

安全分析与解析器攻击向量

DEFLATE 解析器必须严格验证霍夫曼树构造码,以防止指针越界写入。

已知攻击向量

  • 不完整或过度填充的动态霍夫曼树位长度表导致无效的内存读取。
  • 将微小有效负载扩展到数百 GB RAM 的解压炸弹(zip 炸弹)。
  • 未验证的滑动窗口距离码导致缓冲区越界读取。

防御性最佳实践: 在解压期间强制实施最大内存分配量上限和扩展比率上限。

历史渊源与里程碑

1996Peter Deutsch 将 DEFLATE 正式规范为 IETF RFC 1951,将 zlib 规范为 RFC 1950。
1995Jean-loup Gailly 和 Mark Adler 发布了 zlib.
1991Phil Katz 为 PKZIP 2.0 发明了 DEFLATE,以取代较旧的 Implode 和 Reduce 算法。

核心优势与特点

  • 公认的全球标准:已在硬件、操作系统和各种编程运行环境中实现。
  • 无专利、免版税的设计确保整个计算行业都能开放使用。
  • 解压速度快,内存占用极小(仅需 32 KB 滑动窗口内存)。

技术局限与劣势

  • 滑动窗口上限为 32 KB,因此难以有效压缩相距较远处存在重复数据的大文件。
  • 与 Brotli 和 Zstandard 等较新算法相比,现代网络资产的压缩比较低。
  • 如果没有 zlib 或 gzip 包装器,原始 DEFLATE 流缺少自描述元数据或容器封装。

趣味技术冷知识

  • Phil Katz 因早期 PKARC 工具使用受专利保护的 LZW 算法而遭 Unisys 起诉,之后发明了 DEFLATE。
  • 标准 zlib 文件头字节“78 9C”表示默认压缩,“78 01”表示低压缩级别,“78 DA”表示最高压缩级别。
  • 地球上的每个 PNG 图像都使用 DEFLATE 来压缩其 IDAT 像素块。

常见技术问题

DEFLATE、zlib 和 gzip 之间有什么区别?

DEFLATE 是原始压缩算法(RFC 1951)。Zlib 在 DEFLATE 的基础上包装了 2 字节的头部和 Adler-32 校验和(RFC 1950)。Gzip 在 DEFLATE 的基础上包装了文件元数据和 CRC-32 校验和(RFC 1952)。

为什么 PNG 使用 DEFLATE?

PNG 格式创建于 1995 年,旨在取代 GIF 且不使用受专利保护的 LZW 算法,因此选择开放、免版税的 DEFLATE 进行压缩。

如何解压原始的 .deflate 文件?

您可以直接在网页浏览器中使用 File2File.app,将原始的 DEFLATE 或 zlib 字节流解压为未压缩的原始文件。