原始 DEFLATE (.deflate)

IETF 标准

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

将 GZIP 转换为 DEFLATE

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

检查与元数据

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

选择或将文件拖放到此处

100% 浏览器端私密转换 - 文件绝不会离开您的设备

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

字节级文件头签名 (Magic Bytes)

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

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

78 9C / 78 01 / 78 DA

ASCII 表示形式: xœ / x. / xÚ

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

技术规格

容器架构Raw RFC 1951 bitstream or RFC 1950 zlib-wrapped stream with 2-byte header and Adler-32 checksum
压缩方式LZ77 sliding dictionary (up to 32 KB window) combined with dynamic/static Huffman entropy coding
字节序Little-Endian bit-packing order
色彩空间N/A (Data Compression Stream)
通道与结构Raw binary or text data stream
最大尺寸Unbounded stream length
透明度100% bit-exact lossless data reproduction
流式传输与渐进式加载Block-based bitstream supports arbitrary continuous byte streaming

技术对比矩阵: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 Deflate 恢复进行修复。

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

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

已知攻击向量

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

防御性最佳实践:

历史渊源与里程碑

1996Peter Deutsch 将 DEFLATE 正式规范为 IETF RFC 1951,将 zlib 规范为 RFC 1950。
1995Jean-loup Gailly 和 Mark Adler 发布了 zlib,这是用于 DEFLATE 的通用 C 语言参考库。
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 字节流解压为未压缩的原始文件。