生DEFLATE (.deflate)

IETF 標準

DEFLATE は、コンピューティングの歴史の中で最も普及しているロスレスデータ圧縮アルゴリズムであり、30年以上にわたり ZIP アーカイブ、GZIP ストリーム、PNG 画像、および HTTP Web 圧縮を支えてきました。

GZIP を DEFLATE に変換

無料のブラウザ内 GZIP から DEFLATE へのコンバーター。お使いのデバイスでファイルを即座に変換します。

調査とメタデータ

オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してDEFLATEファイルを識別します:

ファイルを選択するか、ここにドロップしてください

プライベート - ファイルがデバイスの外に出ることはありません

または貼り付け Ctrl+V
ネットワーク送信ゼロのプライバシー保証: 外部サーバーへのデータ送信は0バイトです。すべての処理はお使いのブラウザのサンドボックス内でローカルに実行されます。

バイトレベルのヘッダーシグネチャ (マジックバイト)

オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してDEFLATEファイルを識別します:

16進数シグネチャ(オフセット0):

Raw DEFLATEには固定シグネチャがありません。zlibでラップされたストリームは、変動するCMF/FLGバイトで始まります。

ASCII表現: 固定シグネチャなし

標準化: IETF RFC 1951 / RFC 1950 (zlib)

技術仕様

コンテナアーキテクチャ生のRFC 1951ビットストリーム、または2バイトヘッダーとAdler-32チェックサムを持つRFC 1950 zlibラップストリーム
圧縮最大32 KBのLZ77スライディング辞書と動的/静的Huffmanエントロピー符号化を組み合わせ
バイトエンディアンリトルエンディアンのビットパッキング順序
色空間該当なし(データ圧縮ストリーム)
チャンネルと構造生バイナリまたはテキストのデータストリーム
最大寸法ストリーム長に上限なし
透過性データをビット単位で完全に復元する可逆圧縮
ストリーミングとプログレッシブブロックベースのビットストリームにより、任意の位置から連続したバイトストリーミングが可能

技術比較表: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 gzipWeb フォント (WOFF2)、HTTP brLinux カーネル、データベース、ゲーム

一般的な破損モードと16進数リカバリガイド

解凍が「Z_DATA_ERROR: incorrect data check」で失敗する。

根本原因: zlib でラップされたストリームの末尾にある 4 バイトの Adler-32 チェックサムの不一致。

復旧: raw inflate を使用して Adler-32 検証をバイパスするか、File2File.app Deflate Recovery で修復します。

セキュリティ分析とパーサー攻撃ベクトル

DEFLATE パーサーは、範囲外のポインタ書き込みを防ぐために、Huffman ツリー構築コードを厳密に検証する必要があります。

既知の攻撃ベクター

  • 不完全または過剰に割り当てられた動的 Huffman ツリーのビット長テーブルによる無効なメモリ読み取り。
  • 小さなペイロードを数百ギガバイトの RAM に拡張する解凍爆弾 (zip 爆弾)。
  • 検証されていないスライディングウィンドウ距離コードにおけるバッファ過剰読み取り。

防御的ベストプラクティス: 解凍中のメモリ割り当て上限を設定し、展開率にも上限を設けます。

歴史的背景とマイルストーン

1996Peter Deutsch が DEFLATE を IETF RFC 1951 として、zlib を RFC 1950 として正式に規定しました。
1995Jean-loup Gailly と Mark Adler が、DEFLATE のための汎用 C 言語リファレンスライブラリである zlib.
1991Phil Katz が、古い Implode および Reduce アルゴリズムを置き換えるために PKZIP 2.0 向けの DEFLATE を発明しました。

主なメリット

  • 議論の余地のない世界標準:ハードウェア、オペレーティングシステム、およびすべてのプログラミングランタイムに実装されています。
  • 特許フリーかつロイヤルティフリーの設計により、コンピューティング業界全体で自由な利用が保証されています。
  • 最小限のメモリフットプリントで高速な解凍を実現します(わずか 32 KB のスライディングウィンドウメモリのみを必要とします)。

技術的な制限とデメリット

  • スライディングウィンドウが 32 KB に制限されているため、遠くにある冗長性を持つ大きなファイルでは圧縮効率が低下します。
  • BrotliやZstandardなどの新しいアルゴリズムと比較して、最新のWebアセットに対する圧縮率が低いです。
  • 生の DEFLATE ストリームには、zlib や gzip のラッパーがない場合、自己記述型のメタデータやコンテナのフレーミングがありません。

興味深い技術トリビア

  • Phil Katz は、初期の PKARC ユーティリティで使用されていた特許取得済みの LZW アルゴリズムに関して Unisys から提訴された後、DEFLATE を発明しました。
  • 標準の zlib ヘッダーバイト「78 9C」はデフォルトの圧縮、「78 01」は低圧縮、「78 DA」は最大圧縮を示しています。
  • 地球上のすべての PNG 画像は、IDAT ピクセルチャンクを圧縮するために DEFLATE を使用しています。

よくある技術的な質問

DEFLATE、zlib、gzipの違いは何ですか?

DEFLATEは生データの圧縮アルゴリズムです(RFC 1951)。ZlibはDEFLATEに2バイトのヘッダーとAdler-32チェックサムを付加したものです(RFC 1950)。GzipはDEFLATEにファイルメタデータとCRC-32チェックサムを付加したものです(RFC 1952)。

PNGがDEFLATEを使用しているのはなぜですか?

PNG形式は1995年に、特許で保護されたLZWアルゴリズムを使用せずにGIFを置き換えるために作成され、圧縮にはオープンでロイヤリティフリーのDEFLATEが選ばれました。

Raw DEFLATE形式の.deflateファイルを解凍するにはどうすればよいですか?

File2File.appを使用すれば、ウェブブラウザ上で直接、生のDEFLATEまたはzlibバイトストリームを元の未圧縮ファイルに解凍できます。