Surowy DEFLATE (.deflate)

IETF Standardowy

DEFLATE to najbardziej wszechobecny algorytm bezstratnej kompresji danych w historii informatyki, od ponad trzech dekad napędzający archiwa ZIP, strumienie GZIP, obrazy PNG oraz kompresję sieciową HTTP.

Konwertuj GZIP na DEFLATE

Darmowy konwerter z GZIP na DEFLATE w przeglądarce. Konwertuj pliki natychmiast na swoim urządzeniu.

Inspekcja i metadane

Systemy operacyjne i analizatory plików identyfikują pliki DEFLATE, sprawdzając początkową sekwencję bajtów binarnych:

Wybierz lub upuść pliki tutaj

Konwersja w 100% prywatna w przeglądarce - pliki nigdy nie opuszczają Twojego urządzenia

lub wklej Ctrl+V
Gwarancja prywatności bez przesyłania danych do sieci: 0 bajtów przesłanych na zewnętrzne serwery. Całe przetwarzanie odbyło się lokalnie w piaskownicy przeglądarki.

Podpis nagłówka na poziomie bajtów (Magic Bytes)

Systemy operacyjne i analizatory plików identyfikują pliki DEFLATE, sprawdzając początkową sekwencję bajtów binarnych:

PODPIS HEX (OFFSET 0):

78 9C / 78 01 / 78 DA

REPREZENTACJA ASCII: xœ / x. / xÚ

Normalizacja: IETF RFC 1951 / RFC 1950 (zlib)

Specyfikacja techniczna

Architektura konteneraSurowy strumień bitów RFC 1951 lub owinięty w zlib strumień RFC 1950 z 2-bajtowym nagłówkiem i sumą kontrolną Adler-32
KompresjaPrzesuwne słownik LZ77 (okno o rozmiarze do 32 KB) połączone z dynamicznym/statycznym kodowaniem entropijnym Huffmana
Kolejność bajtów (Endianness)Kolejność pakowania bitów w formacie Little-Endian
Przestrzenie kolorówNie dotyczy (Strumień kompresji danych)
Kanały i strukturaSurowy strumień danych binarnych lub tekstowych
Maks. wymiaryNieograniczona długość strumienia
Przezroczystość100% dokładne bitowo bezstratne odtwarzanie danych
Streaming i progresywne ładowanieStrumień bitów oparty na blokach obsługuje dowolne ciągłe przesyłanie strumieniowe bajtów

Techniczna macierz porównawcza: DEFLATE a konkurencja

Atrybut technicznyDEFLATE (Bieżący)GZBROTLIZSTD
StandaryzacjaIETF RFC 1951 (Surowy) / RFC 1950 (zlib)IETF RFC 1952 (Gzip)IETF RFC 7932 (Brotli)IETF RFC 8878 (Zstandard)
Okno przesuwneMaksymalnie 32 kilobajtyMaksymalnie 32 kilobajtyDo 16 megabajtówDo 2 gigabajtów
Tryb sumy kontrolnejAdler-32 (w otoczce zlib)CRC-32 (w otoczce gzip)Brak wbudowanego strumieniaxxHash64 (szybki skrót 64-bitowy)
Codzienne użycieObrazy PNG, strumienie PDF, ZIPUnix .tar.gz, HTTP gzipCzcionki internetowe (WOFF2), HTTP brJądro systemu Linux, bazy danych, gry

Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego

Dekompresja nie powodzi się z komunikatem „Z_DATA_ERROR: incorrect data check".

Główna przyczyna: Niezgodność w 4-bajtowej sumie kontrolnej Adler-32 na końcu owiniętego w zlib strumienia.

Odzyskiwanie: Ominąć weryfikację Adler-32 za pomocą surowego inflate lub naprawić za pomocą funkcji odzyskiwania Deflate w File2File.

Analiza bezpieczeństwa i wektory ataku na parser

Analizatory składni DEFLATE muszą ściśle weryfikować kody konstrukcji drzewa Huffmana, aby zapobiec zapisom wskaźników spoza zakresu.

Znane wektory ataku

  • Niekompletne lub nadmiernie subskrybowane tablice długości bitów dynamicznego drzewa Huffmana powodujące nieprawidłowe odczyty z pamięci.
  • Bomba dekompresyjna (bomba zip) rozszerzająca małe ładunki do setek gigabajtów pamięci RAM.
  • Przekroczenie bufora podczas odczytu w niezweryfikowanych kodach odległości okna przesuwnego.

Najlepsze praktyki obronne: Wymuś ograniczone maksymalne przydzielanie pamięci oraz limity współczynnika rozprężania podczas dekompresji.

Pochodzenie historyczne i kamienie milowe

1996Peter Deutsch formalizuje algorytm DEFLATE jako IETF RFC 1951 oraz zlib jako RFC 1950.
1995Jean-loup Gailly i Mark Adler wydają zlib, uniwersalną bibliotekę referencyjną C dla formatu DEFLATE.
1991Phil Katz wynajduje DEFLATE dla PKZIP 2.0, aby zastąpić starsze algorytmy Implode i Reduce.

Główne zalety

  • Niekwestionowany globalny standard: zaimplementowany w sprzęcie, systemach operacyjnych i każdym środowisku uruchomieniowym języka programowania.
  • Wolny od patentów i opłat licencyjnych projekt gwarantujący otwarty dostęp w całej branży informatycznej.
  • Szybka dekompresja przy minimalnym śladzie pamięciowym (wymaga tylko 32 KB pamięci okna przesuwnego).

Ograniczenia techniczne i wady

  • Okno przesuwne ograniczone do 32 KB, co zmniejsza skuteczność kompresji dużych plików z odległymi redundancjami.
  • Niższe stopnie kompresji nowoczesnych zasobów internetowych w porównaniu do nowszych algorytmów, takich jak Brotli i Zstandard.
  • Surowe strumienie DEFLATE nie posiadają samopiszących metadanych ani ramki kontenera bez otoczek zlib lub gzip.

Ciekawe informacje techniczne

  • Phil Katz wynajduje DEFLATE po tym, jak został pozwany przez firmę Unisys za opatentowany algorytm LZW używany we wczesnych narzędziach PKARC.
  • Standardowe bajty nagłówka zlib „78 9C" oznaczają domyślną kompresję, „78 01" niską kompresję, a „78 DA" maksymalną kompresję.
  • Każdy obraz PNG na Ziemi używa algorytmu DEFLATE do kompresji swoich bloków pikseli IDAT.

Często zadawane pytania techniczne

Jaka jest różnica między DEFLATE, zlib i gzip?

DEFLATE to surowy algorytm kompresji (RFC 1951). Zlib otacza DEFLATE 2-bajtowym nagłówkiem i sumą kontrolną Adler-32 (RFC 1950). Gzip otacza DEFLATE metadanymi pliku i sumą kontrolną CRC-32 (RFC 1952).

Dlaczego PNG używa algorytmu DEFLATE?

Format PNG został stworzony w 1995 roku, aby zastąpić GIF bez używania opatentowanych algorytmów LZW, wybierając do kompresji otwarty, wolny od opłat licencyjnych DEFLATE.

Jak mogę zdekompresować surowy plik .deflate?

Możesz zdekompresować surowe strumienie bajtów DEFLATE lub zlib do oryginalnych nieskompresowanych plików za pomocą aplikacji File2File.app bezpośrednio w przeglądarce internetowej.