Словарь

Что такое CRC ZIP?

CRC, или ZIP CRC, это значение метаданных, которое вы часто найдете в архивных файлах. Узнайте больше о том, что означает CRC и что это значение говорит о вашем собственном файле.

zip-crc

CRC - это короткое число, вычисляемое из содержимого файла в момент его добавления в архив. Оно действует как отпечаток, по которому позже можно проверить, что файл извлечен из архива в точности таким же, каким был добавлен. CRC - это сокращение от cyclic redundancy check (циклический избыточный контроль).

Откуда он берется и в каких файлах содержится

Архивы содержат это поле. То есть его имеют ZIP‑файлы и многие форматы на основе ZIP, включая .docx, .xlsx, .epub, .jar и .apk, а вот RAR, 7z и другие форматы хранят собственные контрольные суммы. В отчете оно может не отображаться для файлов .epub, хотя сам файл его содержит.

Программа сжатия вычисляет значение по исходному, несжатому содержимому файла и сохраняет его рядом с этим элементом, так что у каждого файла в архиве есть свой CRC. Его нельзя выбрать или ввести вручную, и это не информация о вас или вашем компьютере. Оно получается исключительно из байтов файла.

Смысл хранения CRC - в последующем сравнении. Когда архив распаковывается, программа снова вычисляет CRC по только что извлеченному содержимому и сравнивает оба значения. Если они различаются, вы видите знакомое сообщение об ошибке CRC в WinZip, 7-Zip или unzip, которое означает, что извлеченный файл не совпадает с исходным добавленным файлом. Это указывает на повреждение по пути: прерванную загрузку, сбой диска, обрезанную копию. Для появления такого сообщения достаточно одного поврежденного файла, даже если все остальное в архиве в порядке.

Как выглядит это значение

ZIP использует вариант под названием CRC-32, который дает 32-битное число. Обычно оно отображается как восемь шестнадцатеричных цифр, например 0x8f3d2b1c, а некоторые приложения выводят то же значение в виде длинного десятичного числа. У него нет единицы измерения и нет шкалы, по которой одно значение было бы лучше или хуже другого. Пустой файл и запись папки без данных показывают 0x00000000.

Почему это важно

Это поле целостности, встроенное средство самого архива для подтверждения того, что содержимое пережило хранение и передачу. Обнаружение CRC в отчете о метаданных не означает, что с архивом что-то не так. Это просто значение, записанное при создании архива; фактическая проверка происходит при извлечении, а не при просмотре.

У него есть и полезное побочное применение. Одинаковое содержимое всегда дает одинаковый CRC, поэтому две записи с одинаковым CRC и одинаковым размером почти наверняка являются одним и тем же файлом. Это быстрый способ обнаружить дубликаты внутри большого архива.

Чем CRC не является, так это механизмом защиты. CRC предназначен для обнаружения случайных повреждений и достаточно короток, чтобы нужное совпадение можно было подобрать специально, поэтому успешно проверенный CRC не доказывает, что файл никто не изменял. Для этого существуют криптографические хеши, такие как SHA-256. Поскольку значение вычисляется из содержимого, его также можно использовать, чтобы понять, содержат ли два разных архива один и тот же файл. Это иногда бывает полезно и иногда стоит об этом помнить, прежде чем передавать архив.

Мета-ключи