Что такое crc32 в winrar
Перейти к содержимому

Что такое crc32 в winrar

  • автор:

Ошибка контрольной суммы (CRC) в WinRAR

Ошибка CRC

Бывает качаешь целый час большой архив с какого-нибудь сайта, пытаешься открыть его в WinRAR и получаешь сообщение: «ошибка контрольной суммы» или «ошибка CRC сжатых данных». Что делать и почему такое происходит?

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

Как решить проблему?

Есть 2 способа, с помощью которых можно исправить ошибку контрольной суммы.

Способ 1

Самое элементарное – скачать архив заново. Для скачивания лучше использовать специальную программу, загрузчик файлов, например, Download Master.

Способ 2

Можно попытаться восстановить архив с помощью встроенной функции WinRAR. В архиве может содержаться информация для восстановления, которая будет использована архиватором для «оживления» поврежденного архива.

Запустите WinRAR и через его интерфейс найдите проблемный архив. Щелкните на нем правой кнопкой мыши и выберите «восстановить архив(ы)».

Восстановление архива через WinRAR

В некоторых случаях может появиться окно, предлагающее указать, какой формат у архива, который вы хотите восстановить. Укажите правильный формат файла (его расширение) и нажмите «ОК».

Восстановление архива через WinRAR

Если повезет, архив будет восстановлен.

*если ошибка CRC у вас возникает постоянно при открытии любых архивов на вашем компьютере, рекомендуем проверить оперативную память и жесткие диски на предмет потери данных, с помощью такой программы, как AIDA или обратившись к специалистам.

CRC-32 в WinRar

Игорь+

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Войти

Уже есть аккаунт? Войти в систему.

Подписчики 0

Последние посетители 0 пользователей онлайн

Ни одного зарегистрированного пользователя не просматривает данную страницу

  • IPS Theme by IPSFocus
  • Политика конфиденциальности
  • Обратная связь
  • Уже зарегистрированы? Войти
  • Регистрация
Главная
Активность
  • Создать.

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Что такое crc32 в winrar

Vlad » Чт 21.07.2005 21:30

Люди помогите! Как востановить архив rar, говорит ошибка CRC очень нужна информация которая лежит в нем. Заранее спасибо.

Последний раз редактировалось Vlad Пт 22.07.2005 00:33, всего редактировалось 1 раз.

EL » Чт 21.07.2005 22:13

Спросил Яндекса, говорит,

Если в поврежденном архиве нет информации для восстановления то архив невозможно полностью восстановить
Если rar,zip то в Winrar есть функция извлечь и не удалять в случае неправильной CRC32. Используй ключ:
-kb
При извлечении сохранять поврежденные файлы. По умолчанию RAR удаляет файлы, в которых при извлечении были обнаружены ошибки контрольной суммы (CRC). Этот ключ указывает, что файлы с ошибками CRC надо оставлять на диске.

У меня готового решения нет, пощёлкайте по ссылкам в интернете.
Хотя, конечно, если паковали с избыточностью, можно попробовать вылечится. Там даже кнопка на панели WinRAR есть такая.

Vlad » Чт 21.07.2005 22:33

EL писал(а): Если rar,zip то в Winrar есть функция извлечь и не удалять в случае неправильной CRC32. Используй ключ:
-kb

Насчет этого можно поточнее.

А кнопкой лечить пробовал непомогает.

PhpRu » Чт 21.07.2005 23:50

Vlad
Обычно при архивации добавляют избыточную информацию(например 1%)для восстановления архива. например файл побился при кривом склеивании какой-либо качалкой. вэтом случае winrar может с помощью этой информации вылечить файл

EL » Пт 22.07.2005 11:32

Насчет этого можно поточнее.

Это ключ командной строки.
Если файл небольшой и несекретный, пришлите, попробую восстановить, вдруг получится.

Vlad » Пт 22.07.2005 11:44

С прислать сложно он больше 800mb.
С ключом сегодня попробую потом скажу получилось или нет.

AHTOH » Пт 22.07.2005 12:43

Неужели в интернете нет специальных программ для восстановления *.rar архивов? Та кнопочка в RARе наверно раюботает как-то примитивно, вдруг изобрели что-то эффективное?

Для ZIP’а то программ достаточно много. Например, Advanced Zip Repair, который поддерживает большие, зашифрованные и составные архивы. Но к сожалению это только для *.zip.

AHTOH Пионер
Сообщения: 1526 Зарегистрирован: Пт 23.07.2004 14:43 Откуда: Almaty

EL » Пт 22.07.2005 13:54

AHTOH
Zip — «ничей» формат, а rar — от собственно разработчика формата.

Vlad » Пт 22.07.2005 21:51

Ура!! Достал файлы. Большое спасибо. Задавал вопрос на четырех форумах (pulser’а, alser’а, logycom’а, и центре тяжести), но только здесь мне хоть немного помогли.

PhpRu » Сб 23.07.2005 00:14

Vlad
(не сочтите за рекламу) А если бы спрашивал на форумах типа ixbt то помогли бы через полчаса(. как правило)

Vlad » Сб 23.07.2005 01:49

PhpRu писал(а): Vlad
(не сочтите за рекламу) А если бы спрашивал на форумах типа ixbt то помогли бы через полчаса(. как правило)

Особенности программной реализации вычисления контрольной суммы CRC32 на примере pkzip, Winzip, Ethernet Текст научной статьи по специальности «Компьютерные и информационные науки»

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Мыцко Евгений Алексеевич, Мальчуков Андрей Николаевич

Обсуждаются алгоритмы вычисления контрольной суммы CRC32 . Проанализированы описанные в литературе алгоритмы. Из имеющихся в свободном доступе исходных кодов восстановлен алгоритм вычисления контрольной суммы CRC32 , который применяется на практике (в PKZIP, WinZIP, ETHERNET). На примере показано, что алгоритм, описанный в литературе и применяемый на практике, дают разные контрольные суммы .

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Мыцко Евгений Алексеевич, Мальчуков Андрей Николаевич

Пневматологический синтез экклезиологии и антропологии в богословии кардинала ива Конгара

Исследование программных реализаций табличного и матричного алгоритмов вычисления контрольной суммы CRC32

Исследование программных реализаций алгоритмов вычисления CRC, совместимых с Pkzip, WinRAR, Ethernet

Примеры программных реализаций алгоритмов вычисления контрольной суммы сyclic redundancy check 32, совместимой с winrar, pkzip, Ethernet

Исследование реализаций алгоритмов контрольной суммы CRC32
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Особенности программной реализации вычисления контрольной суммы CRC32 на примере pkzip, Winzip, Ethernet»

ОСОБЕННОСТИ ПРОГРАММНОЙ РЕАЛИЗАЦИИ ВЫЧИСЛЕНИЯ КОНТРОЛЬНОЙ СУММЫ CRC32 НА ПРИМЕРЕ PKZIP, WINZIP, ETHERNET

Е.А. Мыцко, А.Н. Мальчуков

Томский политехнический университет E-mail: 7evgen7@sibmail.com; jgs@tpu.ru

Обсуждаются алгоритмы вычисления контрольной суммы CRC32. Проанализированы описанные в литературе алгоритмы. Из имеющихся в свободном доступе исходных кодов восстановлен алгоритм вычисления контрольной суммы CRC32, который применяется на практике (в PKZIP, WinZIP, ETHERNET). На примере показано, что алгоритм, описанный в литературе и применяемый на практике, дают разные контрольные суммы.

Контрольная сумма, циклический избыточный код, табличный алгоритм, матричный алгоритм, CRC32.

Check sum, cyclic redundancy code, table-driven algorithm, matrix-driven algorithm, CRC32.

Контрольная сумма — некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче. Алгоритм вычисления контрольной суммы (англ. Cyclic redundancy code, CRC — циклический избыточный код) — способ цифровой идентификации некоторой последовательности данных, который заключается в вычислении контрольного значения её циклического избыточного кода [1].

Существуют разные алгоритмы вычисления контрольной суммы и способы их реализации. Стандартный алгоритм подразумевает побитное вычисление контрольной суммы путём деления полинома, представляющего данные, на образующий полином, используемый для вычисления CRC в различных протоколах передачи данных (Ethernet, Bluetooth) и архиваторах (PKZIP, Winzip). Также существует табличный [1] алгоритм, ускоряющий расчёт контрольной суммы, за счёт побайтного вычисления. Далее речь пойдёт об особенностях программной реализации алгоритмов вычисления CRC, используемых в PKZIP, Winzip, Ethernet.

Классическая реализация алгоритма вычисления контрольной суммы

Основой для данного алгоритма является полиномиальная арифметика. Классическая реализация расчёта контрольной суммы заключается в побитовом делении полинома, представляющего данные (файл) на образующий полином. Образующий полином вычисляется в зависимости от сферы применения алгоритма. В данном случае это будет полином 104C11DB7, используемый в PKZIP, Winzip, Ethernet [2].

Мыцко Евгений Алексе-евич,

Института кибернетики ТПУ. Email: 7evgen7@sibmail.com Область научных интересов: программная и аппаратная реализации алгоритмов

суммы, тестирование и сравнение по быстродействию алгоритмов вычисления CRC. Мальчуков Андрей Николаевич, канд. техн. наук, доцент кафедры вычислительной

техники Института кибернетики ТПУ.

E-mail: jgs@tpu.ru Область научных интересов: помехоустойчивое кодирование, полиномиальные коды, системы проектирования

помехоустойчивых полиномиальных кодов,

алгоритмы поиска образую-щих полиномов, быстродейст-

вующие алгоритмы кодирования и декодирования данных полиномиальными кодами.

Рис. 1. Схематичное представление работы классического алгоритма

Классический алгоритм можно реализовать с помощью последовательного итерационного сдвига данных в регистре на один бит [3]. В результате проделанных операций в регистре будет находиться контрольная сумма (рис. 1).

Рассмотрим данный алгоритм подробнее. На начальном этапе регистр содержит нулевое значение. На первом шаге происходит сдвиг данных в регистре на один бит от младших разрядов к старшим и добавление к младшим разрядам регистра бита из данных (файла). На втором шаге проверяется выдвинутый бит из старшего разряда регистра. Если бит равен нулю, то осуществляется переход на четвёртый шаг. Если бит равен единице, то осуществляется переход на третий шаг. На третьем шаге выдвинутый бит складывается по модулю два с разрядами регистра 1, 2 и 3, и результат записывается в соответствующие ячейки регистра. На четвёртом шаге проверяется, все ли биты прошли через регистр. Если данное условие ложно, то осуществляется переход на первый шаг. Если условие истинно, то в регистре содержится контрольная сумма. На этом работа алгоритма завершается.

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

Прямой табличный алгоритм

Прямой табличный алгоритм (как и обратный) основывается на том, что при вычислении контрольной суммы можно оперировать байтами, а также с таблицей, рассчитанной на основе образующего полинома.

Ниже, на рис. 2 схематично представлен прямой табличный алгоритм.

В данном алгоритме используется 4-х байтный регистр, в который будет записываться контрольная сумма.

Рассмотрим прямой табличный алгоритм подробнее. На начальном этапе в регистре содержится значение FFFFFFFF в шестнадцатеричной системе счисления.

На первом шаге осуществляется сдвиг содержимого регистра на один байт влево (от младших байт к старшим) и добавление байта из файла. Данные из файла считываются последовательным сдвигом, начиная со старших байт и заканчивая младшим байтом.

На втором шаге, выдвинутый из регистра байт, используется в качестве индекса в таблице 32-битных значений. На третьем шаге осуществляется сложение по модулю два 32битного значения таблицы с содержимым регистра. Результат записывается обратно в регистр. На четвёртом шаге проверяется, все ли байты прошли через регистр. Если условие ложно, осуществляется переход на шаг 1. В случае истинности данного условия, в регистре будет содержаться контрольная сумма. На этом работа алгоритма завершается.

Рис. 2. Схематичное представление прямого табличного алгоритма

Описание данного алгоритма широко встречается в литературе [1]. Контрольная сумма, вычисляемая по прямому табличному алгоритму, не отличается от контрольной суммой, вычисляемой по классическому побитному алгоритму (при условии одинаковых образующих полиномах). Особенностью данного алгоритма является то, что данные считываются побайтно, что значительно ускоряет работу.

Однако на практике (в архиваторах PKZIP, WinZIP и протоколе ETHER.NET) [4] используется другой табличный алгоритм, отличающийся от описанного выше. В нём считывание сообщения идёт с младших байт (начала файла) и используется изменённая таблица 32-х битных значений, что, как будет показано далее, приводит к несовместимости результатов вычисления контрольной суммы. В литературе эта модификация алгоритма не встречается. По имеющимся в свободном доступе исходным кодам вычисления контрольной суммы CRC32, совместимой с CRC32 в PKZIP, WinZIP и ETHERNET, нами был восстановлен алгоритм вычисления контрольной суммы CRC32 и назван обратным табличным алгоритмом.

Обратный табличный алгоритм

Основное отличие данного алгоритма от прямого табличного в том, что данные считываются с младших байт файла [4] и используется изменённая таблица 32-х битных значений. Изменения в таблице заключаются в том, что 32-х битные значения таблицы и их положение зеркально отражаются. На рис. 3 схематично представлен обратный табличный алгоритм.

Рассмотрим обратный табличный алгоритм подробнее. На начальном этапе, как и в прямом табличном алгоритме, регистр содержит значение FFFFFFFFh. На первом шаге происходит сдвиг содержимого регистра вправо на один байт (от старших байт к младшим). Данные из файла считываются последовательным сдвигом, начиная с младших байт. На втором шаге выдвинутый байт складывается по модулю два с новым байтом из данных.

На третьем шаге результат сложения используется в качестве индекса 32-битного значения в таблице. На четвёртом шаге осуществляется сложение по модулю два содержимого регистра с табличным 32-битным значением.

На пятом шаге проверяется, все ли байты файла были считаны. Если данное условие ложно, то осуществляется переход на первый шаг. В случае истинности данного условия, в регистре будет содержаться контрольная сумма. На этом работа алгоритма завершается.

Рис. 3. Схематичное представление обратного табличного алгоритма

Именно этот алгоритм используется на практике при расчёте контрольной суммы CRC32 в архиваторах PKZIP, WinZIP и протоколе ETHERNET [4]. Особенностью данного алгоритма является то, что файл данных считывается с младших байт, что является более удобным. Однако, как уже было упомянуто в описании прямого табличного алгоритма, в этом случае имеются расхождения в результатах расчёта контрольной суммы по сравнению с обычным делением. Для текстового файла, содержащего набор символов 1234567890, по прямому табличному алгоритму контрольная сумма CRC32 равна 6929ACD0, а для обратного табличного алгоритма — 261DAEE5. Для одного и того же файла (picture.jpg), содержащего изображение в формате JPEG по прямому табличному алгоритму контрольная сумма CRC32 равна 569B681, а при обратном табличном алгоритме — FF134C9B.

Из имеющихся в свободном доступе исходных кодов восстановлен алгоритм вычисления контрольной суммы CRC32, который используется на практике: в протоколах передачи данных (например, Ethernet, Bluetooth), архиваторах (например, Pkzip, Winzip). На примерах показано, что в результате применения табличных алгоритмов (описанного в литературе [1] и алгоритма, используемого на практике [4]) получаются разные контрольные суммы CRC32 (с одним и тем же образующим полиномом). Это связано с изменённым порядком считывания байтов из файла в алгоритмах. Возможность считывания файла c младших или старших байт требует разного подхода к реализации алгоритма. Рекомендуется при расчёте CRC уточнять, какой алгоритм используется, чтобы избежать разногласий при получении результатов.

1. Ross N.W. A Painless Guide to CRC Error Detection Algorithms. // Dr Ross Williams. 1993. URL: http://www.ross.net/crc/download/crc_v3.txt (дата обращения: 01.05.2011).

2. Koopman P. 32-Bit Cyclic Redundancy Codes for Internet Applications // Intern. Conf. on Dependable Systems and Networks (DsN). — Washington, July 2002. — Washington, DC, 2002. -P.459-468.

3. Темников Ф.Е., Афонин В.А., Дмитриев В.И. Теоретические основы информационной техники. — 2-е изд., испр. и доп. — М.: Энергия, 1979. — 512 с.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *