生DEFLATE (.deflate)

IETF 標準

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

GZIP を DEFLATE に変換

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

調査とメタデータ

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

ここにファイルを選択またはドロップ

100%プライベートなブラウザ内変換 - ファイルがデバイスから外部に出ることはありません

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

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

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

16進数シグネチャ (オフセット 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 gzipWeb フォント (WOFF2)、HTTP brLinux カーネル、データベース、ゲーム

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

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

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

復旧: 生のインフレ (raw inflate) を使用して Adler-32 検証をバイパスするか、File2File 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が選ばれました。

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

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