7z

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
7z
7zip archive icon.svg
Расширение .7z
MIME-тип application/x-7z-compressed[2]
Сигнатура '7', 'z', 0xBC, 0xAF, 0x27, 0x1C
Разработчик Павлов, Игорь Викторович[d]
Опубликован 1999[1]
Тип формата Сжатие данных
Открытый формат? Да: GNU Lesser General Public License
Сайт 7-zip.org/7z.html

7z - формат сжатия файлов в архив, поддерживающий несколько различных алгоритмов сжатия, шифрования и предварительной обработки данных. Формат 7z изначально был выпущен как архиватор 7-Zip . Программа 7-Zip общедоступна в соответствии с условиями "Стандартной общественной лицензии GNU Lesser" . LZMA SDK 4.62 был размещен в открытом доступе в декабре 2008 года. Последняя стабильная версия 7-Zip и LZMA SDK - это версия 19.00.

Спецификация формата файла 7z распространяется с исходным кодом 7-Zip. Спецификацию можно найти в текстовом формате в подкаталоге 'doc' дистрибутива исходного кода.

Особенности и улучшения[править | править код]

Формат 7z обеспечивает следующие основные функции:

  • Открытая модульная архитектура, которая позволяет использовать любой метод сжатия, преобразования или шифрования.
  • Высокие коэффициенты сжатия (в зависимости от используемого метода сжатия)
  • AES- 256 шифрование .
  • Поддержка больших файлов (примерно до 16 exbibytes , или 2 64 байта).
  • [1]Имена файлов Unicode .
  • Поддержка сплошного сжатия , при котором несколько файлов одинакового типа сжимаются в одном потоке, чтобы использовать объединенную избыточность, присущую аналогичным файлам.
  • Сжатие и шифрование заголовков архива .
  • Поддержка архивов, состоящих из нескольких частей: например, xxx.7z.001, xxx.7z.002, ... (см. Пункты контекстного меню « Разделить файл ...», чтобы создать их, и « Объединить файлы ...», чтобы повторно собрать архив из набор многокомпонентных файлов компонентов)
  • Поддержка пользовательских библиотек плагинов кодеков.

Открытая архитектура формата позволяет добавлять в стандарт дополнительные будущие методы сжатия.

Методы сжатия[править | править код]

В настоящее время определены следующие методы сжатия:

  • LZMA  - вариант алгоритма , использующий словарь объёмом до 4 ГБ. За этапом LZ следует энтропийное кодирование с использованием кодера дальности на основе цепей Маркова и двоичного кода.
  • LZMA2  - модифицированная версия LZMA, обесп[2] - это сжатый [3] - это сжатый ечивающая лучшую поддержку многопоточности и меньшее расширение несжимаемых данных.
  • Bzip2  - стандартный алгоритм преобразования Берроуза-Уилера . Bzip2 использует два обратимых преобразования; BWT, затем перемещает дальше с кодированием Хаффмана для уменьшения символов (фактический элемент сжатия).
  • PPMd  - PPMdH Дмитрия Шкарина 2002 года (PPMII / cPPMII) с небольшими изменениями: PPMII - улучшенная версия алгоритма сжатия PPM 1984 года (прогнозирование путем частичного сопоставления).
  • DEFLATE  - Стандартный алгоритм, основанный на кодировании LZ77 32 кБ и кодировании Хаффмана . Deflate встречается в нескольких форматах файлов, включая ZIP , gzip , PNG и PDF . 7-Zip содержит кодер DEFLATE с нуля.

Набор инструментов повторного сжатия, называемый AdvanceCOMP, содержит копию кодера DEFLATE из реализации 7-Zip; Эти утилиты можно использовать для дальнейшего сжатия размера существующих файлов gzip , ZIP , PNG или MNG .

Фильтры предварительной обработки[править | править код]

LZMA SDK поставляется с включенными препроцессорами BCJ и BCJ2 , так что на более поздних этапах может достигаться большее сжатие: для процессоров x86 , ARM , PowerPC (PPC), IA-64 Itanium и ARM Thumb цели перехода «нормализованы» до сжатия путем изменения относительного положения в абсолютные значения. Для x86 это означает, что ближние переходы, вызовы и условные переходы (но не короткие переходы и условные переходы).

  • BCJ  - конвертер для 32-битных файлов x86.
  • BCJ2  - препроцессор для 32-битных файлов x86. BCJ2 является улучшением BCJ, добавляя дополнительную обработку команд перехода / вызова x86. Ближний прыжок, ближний вызов, условные ближние прыжки цели разделяются и сжимаются отдельно в другом потоке.
  • Дельта-кодирование  - дельта-фильтр, базовый препроцессор для мультимедийных данных.

Подобная исполняемая технология предварительной обработки включена в другое программное обеспечение; RAR компрессор оснащен смещения сжатия для 32-разрядных x86 исполняемых файлов и IA-64 исполняемых файлов, а UPX выполнения компрессор исполняемых файлов включает в себя поддержку для работы с 16-битными значениями в пределах DOS бинарных файлов.

Шифрование[править | править код]

Формат 7z поддерживает шифрование по алгоритму AES с 256-битным ключом. Ключ генерируется из предоставленной пользователем парольной фразы с использованием алгоритма, основанного на хэш-функции SHA-256 . SHA-256 выполняется 2 18 (262144) раз,  что вызывает значительную задержку на низкопроизводительных ПК перед началом сжатия или извлечения. Этот метод называется растягиванием клавиш и используется для более сложного поиска парольной фразы. Текущие атаки на основе графического процессора и пользовательские аппаратные средства ограничивают эффективность этого конкретного метода растяжения ключа. поэтому все еще важно выбрать надежный пароль. Формат 7z позволяет шифровать имена файлов архива 7z.

Форматы[править | править код]

Формат 7z не хранит разрешения файловой системы (например, разрешения владельца / группы UNIX или списки ACL NTFS ) и, следовательно, может не подходить для целей резервного копирования / архивирования. Обходной путь в UNIX-подобных системах для этого необходимо преобразовать данные в поток битов tar перед сжатием в 7z. Но стоит отметить, что GNU tar (распространенный во многих средах UNIX) также может сжимать с помощью алгоритма LZMA без использования 7z, и что в этом случае предложенный. Расширение файла для архива - ".tar.lzma" (или просто ".tlz"), а не ".tar.7z". С другой стороны, важно отметить, что tar не сохраняет кодировку файловой системы, что означает, что сжатые tar-файлы имена файлов могут стать нечитаемыми, если они распакованы на другом компьютере. Также можно использовать LZMA2, запустив его через инструмент xz . Последние версии GNU tar поддерживают -Jкоммутатор, который запускает TAR через XZ. Расширение файла: «.tar.xz» или «.txz». Этот метод сжатия был принят во многих дистрибутивах для упаковки, таких как Arch, Debian (deb), Fedora (rpm) и Slackware.

Формат 7z не позволяет извлекать некоторые «испорченные файлы» - например, если у вас есть первый сегмент серии файлов 7z, 7z не может дать начало файлам внутри архива - он должен ждать, пока все Сегменты загружены. В формате 7z также отсутствуют записи о восстановлении, что делает его уязвимым для деградации данных, если только он не используется совместно с внешними решениями, такими как архивы , или внутри файловых систем с надежным исправлением ошибок . Для сравнения, в zip- файлах также отсутствует функция восстановления.

Ссылки[править | править код]

[www.7-zip.org]


[[Категория:Архиваторы]]

[[Категория:Архиваторы и компрессоры]]

[[Категория:Сжатие данных]]