|
Хэши
Создание хэш-файлов
Для создания хэш-файла нужно сначала в дереве файлов выбрать каталог, для которого Вы хотите создать хэш-файл.
хэш-файл создается только для каталога со всеми подкаталогами.
Затем нажмите кнопку "Хэш" для вызова окна подтверждения настроек хэша (см. рисунок). Здесь можно откорректировать выбранный каталог и
указать другое имя (и каталог) для создаваемого хэш-файла. Если хэш-файл с этим именем существует, он будет перезаписан!!
Нажмите "Далее" для создания хэш-файла или "Отмена" для выхода из настроек хэш-файла.
CDCheck по умолчанию предлагает имя для создаваемого хэш-файла. Это имя вырабатывается так:
- если источник - несъемный диск DRV (жесткий диск и т.п.) => DRV\drive_DRV.CRC
- если источник - съемный диск DRV с меткой VOL (CD-ROM и т.п.) => DRV\volume_VOL.CRC
- если источник - некорневой каталог DIR => DIR\DIR.CRC
- если источник - файл FILE => FILE.CRC
(для хэш-файлов в форматах MD5 и SFV расширение файла будет соответственно .md5 и .sfv)
В одном каталоге и его подкаталогах можно создать несколько хэш-файлов. При проверке с использованием автоопределения
обнаруживаются все хэш-файлы. Значение хэша проверяемого файла сравнивается со значением хэша, рассчитанным последним.
Если значение хэша для проверяемого файла есть в нескольких хэш-файлах, используется хэш-файл, в который записана более
поздняя дата (если дата не записана, используется дата изменения хэш-файла).
Это полезно, например, при прожиге многосессионных CD и импорте предыдущих сессий.
В этом случае при прожиге следующей сессии (когда в предыдущих сессиях уже присутствуют хэш-файлы) нужно лишь добавить хэш-файл
(с уникальным именем) для последней сессии.
Учтите! Хэш-файл всегда создается относительно выбранного для проверки каталога. Чтобы при проверке срабатывало автоопределение,
созданный хэш-файл нужно положить в проверяемый каталог или создавать прямо в нем. Однако, если его нельзя поместить
в проверяемый каталог (если он только для чтения или у вас нет нужных полномочий), можно указать другое его расположение
(в другом каталоге), а затем при настройке проверки вручную выбрать этот файл.
Учтите! Если остановить создание хэш-файла вручную, хэш-файл со значениями, рассчитанными до этого, будет удален.
Совет 1: если вам не нужно изменять настройки хэширования, удерживайте нажатым shift, щелкая по кнопке, и тогда
создание контрольных сумм начнется в выбранном каталоге с последними использованными настройками.
Совет 2: задать каталог для создаваемых хэш-файлов можно в пункте "папка хэш по умолчанию" в "Настройке", выбрав
имя создаваемого хэш-файла и выбрав первый пункт (нажав клавишу)
Предупреждение (опытным пользователям): под Win95,98,Me не рекомендуется создавать хэш-файлы в каталогах, содержащих подкаталоги или файлы
с именами, включающими символы не родного языка (например, китайские иероглифы в американской версии Win98). Эти "иноязычные файлы" могут создаваться только некоторыми другими OS,
их легко распознать по символу '_' в имени, и они не копируются Проводником Windows.
Другие параметры настройки хэша
- Тип хэш: здесь можно выбрать, какой хэш-код следует рассчитывать для файлов
- Использовать формат файла .MD5: использовать тот же формат, что и утилита GNU MD5sum (и некоторые другие) для расчета хэш-файлов MD5.
- Использовать формат файла .SFV: использовать тот же формат, что и утилита WinSFV (и некоторые другие) для расчета хэш-файлов CRC-32.
- Обойти ограничения ISO: здесь можно задать ограничения на длину имени файла и пути к нему для совместимости с различными стандартами ISO для прожига CD.
Типы хэш и форматы файлов
CDCheck использует следующие типы хэш:
MD2, MD4, MD5, CRC-32, Adler32, Gost, Haval (128,160,192, 224, 256), SHA (1, 256, 384, 512), Tiger (128, 160, 192), RipeMD (128, 160).
Наиболее распространенные из них - CRC-32, MD5 и SHA. Благодаря их популярности первые два типа хэшей (MD5 и CRC32) уже
имеют свои установившиеся форматы файлов. Файл формата CRC-32 имеет расширение .SFV. он предназначен для использования в программе WinSFV
и принят многими программами проверки контрольных сумм. Формат MD5 происходит из Linux. В нем работает утилита GNU md5sum, и он общепринят
в сообществе Linux.
Если вам интересно, что значат числа в этих обозначениях, - они относятся к длине вычисляемых хэшей. Как правило,
чем длиннее хэш, тем он надежнее. Подробнее о хэш-алгоритмах рекомендую поискать в Интернете.
Я рекомендую использовать алгоритм MD5. Он намного надежнее, чем CRC-32, но при вычислении больше загружает процессор, поэтому работает медленнее.
Что означают термины "хэш" и "хэш-файл"?
Хэш - это своего рода "отпечаток пальца" некоторой информации (данных). Он предназначен
для выработки кода определенной длины (чаше всего от 8 до 512 бит), удовлетворяющего следующим требованиям:
- Каждый бит данных учитывается в хэше. Это значит, что изменение даже одного бита должно изменить контрольную сумму.
- Относительно малые изменения данных всегда приводят к изменению хэша. Желательно быть уверенными,
что лишь при чрезвычайно маловероятной комбинации ошибок хзш останется неизменным.
- Гистограмма зависимости значений хэша от входных данных является гладкой. При заданных входных данных, желательно
иметь приблизительно равную вероятность получения хэша во всем диапазоне ее возможных значений (например, от 0h до FFh для 8-битных хэшей).
CRC - это сокращение выражения Cyclic redundancy code ("циклический избыточный код"). Это код, обеспечивающий эффективное обнаружение ошибок. Он используется
многими программами (например, архиватором Zip, протоколами связи и т.д.). Существует много вариантов этого кода.
В CDCheck используется алгоритм CRC-32 для выработки кода CRC-32. Термином CRC часто называют хэш-коды вообще.
CRC-32 - это название 32-битного алгоритма проверки циклическим избыточным кодом. CRC-32 обычно использует определенную
32-битную формулу расчета CRC, санкционированную CCITT, международной организацией стандартизации, занимающейся в первую очередь связью.
CRC-32 используется в протоколах связи, таких как HDLC и ZMODEM для проверки целостности блоков данных,
передаваемых различными средствами.
MD5 - это название алгоритма Message Digest 5. Этот алгоритм разработан профессором Ronald L. Rivest из MIT и используется во многих программах.
хэш-файл - это файл, содержащий хэш-коды для файлов или других данных (файл CRC CDCheck, файл .SFV, файл .MD5).
В чем разница между различными хэш-файлами?
Файл CRC CDCheck - это файл, содержащий хэш-код (MD5, CRC-32 и т.д.) отдельно для каждого файла
в проверяемом каталоге и его подкаталогах. Он записывается в формате Юникод и оптимизирован для уменьшения размера файла.
Он превосходит форматы SFV и MD5, но пока не используется ни в каких других программах.
Файл SFV - это файл, содержащий хэш-код только типа CRC-32. Он записывается в формате Ansi и изначально используется программой WinSFV.
Его используют и многие другие программы.
Файл MD5 содержит хэш-код только типа MD5. Он записывается в формате Ansi и используется утилитой GNU MD5sum.
Поэтому он полностью поддерживается в Linux, и еще его используют некоторые другие программы.
Насколько надежен код CRC-32?
Код CRC-32 - это 32-битное число (код), выработанный алгоритмом CRC-32 на основе входных данных (в нашем случае - содержимого файла).
Это своего рода "отпечаток пальца". Однако он несколько отличается от отпечатка пальца человека.
Часто говорят, что нет двух людей с одинаковыми отпечатками. В нашем случае это не так.
Как только в мире станет больше 4,294,967,296 разных файлов, заранее известно, что коды некоторых из них
совпадут. Тем не менее, код CRC-32 удовлетворяет всем приведенным выше требованиям к хэш-коду.
Эти цели и имела в виду CCITT, выбирая алгоритм CRC-32. Практически, вероятность
неосторожного повреждения или изменения файла без изменения его CRC пренебрежимо мала, так что для всех
практических целей выявление изменений путем проверки CRC можно считать надежным.
Однако, при преднамеренном повреждении файла (например, вирусом) CRC можно придать ее прежнее значение.
Это можно выполнить методом "грубой силы", добавив несколько байт в конец файла. Это единственное,
от чего она не может защитить (хотя это почти никогда не делается).
Хэш MD5
MD5 разработан профессором Ronald L. Rivest из MIT. Вот что он делает, как указано в сводке rfc1321:
Входом в алгоритм MD5 является сообщение произвольной длины, а выходом - 128-битный "отпечаток пальца" или
"краткое изложение" входного сообщения. Предполагается, что численно нереализуемо создание двух сообщений, имеющих одинаковое "краткое изложение",
или сообщения с заранее заданным "кратким изложением. Алгоритм MD5 предназначен для реализации цифровой подписи,
где требуется безопасное "уплотнение" больших файлов перед их шифрованием личным (секретным) ключом криптосистемой с открытым ключом, такой как RSA.
В сущности, MD5 - это способ проверки целостности данных, намного более надежный, чем контрольная сумма и многие другие часто используемые методы.
ДОПОЛНИТЕЛЬНО: формат файла CRC CDCheck
Файл CRC записывается в текстовом формате Юникод. Для отражения того, что файл в Юникоде в его начало записывается символ FEFFh.
Далее файл состоит из двух разделов. Это - заголовок и данные.
Заголовок
В заголовок записывается базовая информация о варианте формата файла, типе хэша и дате создания файла. Пока
изменяются только дата и формат, а остальная часть заголовка постоянна. Дата должна быть в формате дд.мм.гггг.
[Info]
Version=1
Format=[Fmt]
Date=19.07.2001
[Fmt] может быть CRC-32, MD5, MD2, SHA512, RIPEMD128 и т.д.
Данные
В раздел данных записываются хэш-коды файлов. Строки, следующие за [Data] - типа DIR или FILE.
Порядок файлов и каталогов определяется следующим алгоритмом сортировки:
- файлы в каталоге тестируются прежде, чем подкаталоги
- файлы и каталоги сортируются по имени с использованием LANG_ENGLISH и SUBLANG_NEUTRAL.
Тип DIR: DIR [каталог]
[каталог] - полный относительный путь к каталогу, в котором лежат файлы, следующие за этой строкой.
Тип FILE: [Hash [имя файла]
[Hash] - рассчитанный хэш-код (зависит от формата, указанного в разделе Info) для файла [имя файла]
Пример:
[Info]
Version=1
Format=CRC-32
Date=19.07.2001
[Data]
DIR Start Menu\Programs\
B1E71BFF CDCheck.lnk
9DF41063 CDMASTER.lnk
DIR Start Menu\Programs\Utils\
4D6985CE Gibby.exe
ДОПОЛНИТЕЛЬНО: реализация хэша
Хэш реализован путем параллельного чтения и вычисления хэшей. Это выполняется посредством
записи данных с диска в промежуточный буфер в одном потоке и чтения из буфера с вычислением значений
контрольных сумм в другом потоке. Значения контрольных сумм записываются на диск по мере их вычисления
для минимизации использования памяти.
ПРЕДЫДУЩАЯ
СОДЕРЖАНИЕ
СЛЕДУЮЩАЯ
(C) 2003-2008, Митя Перко (Домашняя страница CDCheck)
|