Хэши MD5, SHA-256, контрольная сумма CRC32

Скачать программу, 15 Kb

Иногда вы скачиваете файл из интернета, и у вас возникают сомнения: правильно ли он скачался, не произошла ли ошибка при передаче данных? А может быть, кто-то намеренно испортил скачанную программу или заразил ее вирусом? На этот случай существуют контрольные суммы и хэш-функции. Это короткие (от 2 до 64 байт) числа, которые можно легко и довольно быстро рассчитать для любого файла, причем для разных файлов они почти всегда будут разными.

На многих сайтах рядом со ссылкой для загрузки программы приведена ее хэш-функция MD5 или контрольная сумма CRC32. Скачав файл, вы можете проверить его правильность. Просто рассчитайте его контрольную сумму (CRC). Если она совпадет с контрольной суммой, указанной на сайте, значит, все в порядке.

Бывает и такая ситуация: кто-нибудь дал вам ту же программу на диске, а вы не уверены, что эта именно та версия, которая есть на сайте. Тогда зайдите на сайт и посмотрите CRC, затем посчитайте CRC того файла, который имеется у вас. Если это тот же файл, и он не был испорчен, заражен вирусом и т.п., то CRC совпадут.

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

А вот хэши защищают как от компьютерных ошибок, так и от преднамеренного искажения данных. Если хэш-функция достаточно надежна (устойчива к коллизиям), то никто не сможет найти файл с заданным хэшем за разумный промежуток времени (то есть на это потребуется несколько сотен лет или около того). Хэш MD5 на сегодняшний день считается ненадежным, так как существуют способы найти два сообщения, которые имеют одинаковое значение хэш-функции. CRC32 не является устойчивой к коллизиям по определению, так как это контрольная сумма, а не хэш. Однако MD5 и CRC32 все еще применяются, поэтому я включил их в эту программу. В алгоритме SHA-256 никаких уязвимостей пока найдено не было; эта хэш-функция считается безопасной.

Пользоваться программой очень просто. Нажмите Обзор, выберите файл, нажмите Открыть и Рассчитать. Если вам не нужен SHA-256 или MD5, сбросьте соответствующие галочки, чтобы сэкономить время (для больших файлов хэши считаются довольно долго).

Рассчитанное значение хэша можно скопировать в буфер. Выделите его и нажмите Ctrl+C или же щелкните правой кнопкой и выберите Копировать.

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