原始 DEFLATE (.deflate)

IETF 標準

DEFLATE 是一種廣泛使用的無損資料壓縮演算法。它是 ZIP 壓縮檔、GZIP 串流、PNG 圖片與 HTTP 壓縮的核心技術。

將 GZIP 轉換為 DEFLATE

免費的瀏覽器端 GZIP 轉 DEFLATE 轉換器。在您的裝置上即時轉換檔案。

檢查與中繼資料

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 DEFLATE 檔案:

在這裡選擇或拖放檔案

私密 - 檔案絕不會離開您的裝置

或貼上 Ctrl+V
零網路傳輸隱私保證: 0 位元組上傳至外部伺服器。所有處理皆在本機瀏覽器沙箱中進行。

位元組層級標頭簽章(檔案簽章)

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 DEFLATE 檔案:

十六進位簽章(偏移量 0):

原始 DEFLATE 沒有固定的簽章;zlib 包裝的串流開頭為變動的 CMF/FLG 位元組

ASCII 表示法: 沒有固定的 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 KB最高 32 KB最高 16 MB最多 2 GB
檢查碼模式Adler-32(於 zlib 包裹中)CRC-32(於 gzip 包裹中)無內建串流xxHash64(64 位元快速雜湊)
日常使用PNG 圖片、PDF 串流、ZIPUnix .tar.gz、HTTP gzip網路字型(WOFF2)、HTTP brLinux 核心、資料庫、遊戲

常見損壞模式與十六進位修復指南

解壓縮失敗並顯示「Z_DATA_ERROR: incorrect data check」(資料檢查錯誤)。

根本原因: zlib 包裹串流結尾處的 4 位元組 Adler-32 檢查碼不符。

修復: 使用原始 inflate 繞過 Adler-32 驗證,或使用 File2File.app Deflate 復原工具進行修復。

安全性分析與解析器攻擊向量

DEFLATE 解析器必須嚴格驗證霍夫曼樹建構代碼,以防止超出範圍的指標寫入。

已知攻擊向量

  • 不完整或超額訂閱的動態霍夫曼樹位元長度表,導致無效的記憶體讀取。
  • 將極小的酬載擴展成數百 GB 記憶體的解壓縮炸彈(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 演算法。

主要優勢與優點

  • DEFLATE 在軟體程式庫與檔案格式中廣泛實作,不過可用支援取決於執行階段與應用程式。
  • DEFLATE 規格可自由實作;授權與支援取決於特定的軟體實作。
  • 快速解壓縮且記憶體佔用極小(僅需 32 KB 滑動視窗記憶體)。

技術限制與缺點

  • 滑動視窗限於 32 KB,降低了對含有遠距冗餘的大型檔案的壓縮效率。
  • 與 Brotli 和 Zstandard 等較新演算法相比,現代網頁資源的壓縮率較低。
  • 原始 DEFLATE 串流若沒有 zlib 或 gzip 包裝器,則缺少自我描述的中繼資料或容器框架。

有趣的技術冷知識

  • Phil Katz 在因早期 PKARC 公用程式中所使用的 LZW 演算法專利而被 Unisys 起訴後,發明了 DEFLATE。
  • 標準 zlib 標頭位元組「78 9C」代表預設壓縮,「78 01」代表低壓縮,「78 DA」代表最高壓縮。
  • PNG 使用 DEFLATE 來處理其圖片資料串流,這是由 PNG 格式所指定的。

常見技術問題

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 位元組串流解壓縮為原始未壓縮檔案。