Суров DEFLATE (.deflate)

IETF Стандарт

DEFLATE е широко използван алгоритъм за компресиране без загуба на данни в историята на изчислителната техника, който се използва в ZIP архиви, GZIP потоци, PNG изображения и за компресиране на уеб трафик по HTTP в продължение на повече от три десетилетия.

Конвертиране от GZIP към DEFLATE

Безплатен конвертор от GZIP към DEFLATE в браузъра. Конвертирайте файлове незабавно на вашето устройство.

Проверка и метаданни

Операционните системи и файловите анализатори идентифицират DEFLATE файлове чрез проверка на началната двоична байтова последователност:

Изберете или пуснете файлове тук

Поверително - файловете никога не напускат устройството ви

или поставете Ctrl+V
Гаранция за поверителност с нулево мрежово предаване: 0 байта са качени на външни сървъри. Цялата обработка се извършва локално в пясъчниците на вашия браузър.

Байтов подпис на заглавката (сигнатурни байтове)

Операционните системи и файловите анализатори идентифицират DEFLATE файлове чрез проверка на началната двоична байтова последователност:

HEX ПОДПИС (ОФСЕТ 0):

Няма фиксиран подпис за raw DEFLATE

ASCII ПРЕДСТАВЯНЕ: Няма фиксиран подпис

Стандартизация: IETF RFC 1951 / RFC 1950 (zlib)

Технически спецификации

Контейнерна архитектураСуров битов поток RFC 1951 или поток, обвит в zlib по RFC 1950, с 2-байтова заглавка и контролна сума Adler-32
КомпресияПлъзгащ се речник LZ77 (прозорец до 32 KB) в съчетание с динамично или статично ентропийно кодиране на Хуфман
Поредност на байтовете (Endianness)Пакетиране на битовете в ред от младшия към старшия байт (Little-Endian).
Цветови пространстваN/A (Data Compression Stream)
Канали и структураСуров двоичен поток или поток от текстови данни
Максимални размериДължина на потока без фиксирано ограничение
ПрозрачностБеззагубно възпроизвеждане на данните с точност до всеки бит (100%)
Поточно предаване и прогресивно зарежданеБитовият поток е разделен на блокове и поддържа непрекъснато предаване на произволен брой байтове

Техническа сравнителна матрица: 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 brЯдрото на Linux, бази данни, игри

Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни

Декомпресията е неуспешна с грешка 'Z_DATA_ERROR: incorrect data check'.

Първопричина: Несъответствие в 4-байтовата контролна сума Adler-32 в края на обвития в zlib поток.

Възстановяване: Заобиколете проверката на Adler-32, като използвате суров inflate, или поправете с File2File.app Deflate Recovery.

Анализ на сигурността и вектори на атака към парсера

Парсерите на DEFLATE трябва стриктно да валидират кодовете за изграждане на дървото на Хофман, за да предотвратят записи на указатели извън позволените граници.

Известни вектори на атака

  • Непълни или препълнени таблици с дължина на битовете за динамично дърво на Хофман, водещи до невалидни четения от паметта.
  • Декомпресионна бомба (zip бомба), раздуваща малки входни данни до стотици гигабайти в RAM.
  • Прекомерно четене от буфера (buffer over-read) при невалидирани кодове за разстояние на плъзгащия се прозорец.

Най-добри практики за защита: Задайте максимално количество памет за заделяне и ограничете коефициента на разширение по време на декомпресия.

Исторически произход и етапи

1996Питър Дойч официално оформя DEFLATE като IETF RFC 1951 и zlib като RFC 1950.
1995Жан-Луп Гайли и Марк Адлер пускат zlib.
1991Фил Кац изобретява DEFLATE за PKZIP 2.0, за да замени по-старите алгоритми Implode и Reduce.

Основни предимства

  • DEFLATE е широко внедрен в софтуерни библиотеки и файлови формати, но наличната поддръжка зависи от средата за изпълнение и приложението.
  • Спецификацията на DEFLATE е свободна за реализация; лицензът и поддръжката зависят от конкретния софтуер.
  • Бърза декомпресия с минимален отпечатък в паметта (изисква само 32 KB памет за плъзгащ се прозорец).

Технически ограничения и минуси

  • Плъзгащият се прозорец е ограничен до 32 KB, което намалява ефективността на компресията при големи файлове с далечни повтарящи се данни.
  • По-ниски коефициенти на компресия при съвременни уеб ресурси в сравнение с по-нови алгоритми като Brotli и Zstandard.
  • Суровите DEFLATE потоци нямат самоописващи се метаданни или обвивка на контейнер без zlib или gzip обвивки.

Интересни технически факти

  • Фил Кац изобретява DEFLATE, след като Unisys го съди заради патентования алгоритъм LZW, използван в ранните помощни програми PKARC.
  • Стандартните байтове за 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 файл?

Можете да декомпресирате сурови байтови потоци DEFLATE или zlib в оригинални недекомпресирани файлове с помощта на File2File.app директно във вашия уеб браузър.