Содержание
Скачивая файлы, программы или образы дисков вы наверняка замечали, что вместе с данными файлами часто распространяют и какие-то зашифрованные строки, которые называются контрольными или хеш суммами. В данной статье мы расскажем о том, что такое контрольная сумма, для чего ее используют и как проверить контрольную сумму для строк или файлов.
Что такое контрольная сумма
Контрольная сумма или хеш-сумма – это значение, которое было рассчитано по некоторому алгоритму на основе имеющихся файлов или данных. Особенностью контрольной суммы является то, что ее алгоритм, при одинаковых входных данных всегда выдает одинаковое значение. При этом малейшее изменение входных данных кардинально меняет значение контрольной суммы.
Эта особенность позволяет использовать контрольную сумму для проверки целостности файлов или данных. Например, вам нужно отправить какой-то файл, и вы хотите убедиться, что он не будет поврежден или изменен на своем пути к получателю. Для решения этой задачи можно использовать контрольную сумму. Высчитываете контрольную сумму и отправляете ее вместе с файлом. После чего получатель файла повторно высчитывает контрольную сумму файла и сравнивает ее с вашей контрольной суммой. Если значения совпадают, значит файл оригинальный, если нет, значит он получил какие-то изменения.
Также нужно упомянуть, что контрольную сумму нельзя использовать для получения исходных данных. То есть нельзя «расшифровать» хеш-сумму и получить данные которые были хешированы, хеш-сумму можно только сравнить с другой хеш-суммой. Это особенность открывает дополнительные возможности. Например, хеш-суммы используются для хранения паролей. Когда вы регистрируетесь на каком-то сайте и вводите свой пароль, то он не хранится на сервере в открытом виде. Вместо этого хранится только его контрольная сумма. А когда вы входите в свой аккаунт с использованием пароля, система получается ваш пароль, высчитывает его хеш-сумму и сравнивает с хеш-суммой, которая хранится на сервере. Если хеш-суммы совпали, значит пароль верный и вы можете войти в аккаунт, если хеш-суммы не совпадают, значит пароль не верный и вас перенаправляют на страницу для восстановления пароля.
Для высчитывания контрольной суммы существует множество различных алгоритмов или так называемых хеш-функций. Самыми известными и популярными алгоритмы являются: CRC32, MD5, SHA-1 и SHA-2. Но, есть и множество других алгоритмов, некоторые из которых имеют широкое применения, а некоторые используются только для специфических задач. При этом часть существующих алгоритмов признаны устаревшими или уязвимыми и больше не используются. Так, алгоритм MD5 практически полностью перестал использоваться поскольку выяснилось, что он может выдавать одинаковые значения для разных входных значений.
Для примера продемонстрируем, как выглядит контрольная сумма на практике. Например, возьмем строку «Hello, world!» и высчитаем ее контрольную сумму с использованием нескольких популярных алгоритмов.
Алгоритм | Значение |
Adler32 | 205e048a |
CRC32 | ebe6c6e6 |
Haval | 5711dea10d85b988fcb1eed99ce7310c |
MD2 | 8cca0e965edd0e223b744f9cedf8e141 |
MD4 | 0abe9ee1f376caa1bcecad9042f16e73 |
MD5 | 6cd3556deb0da54bca060b4c39479839 |
RipeMD128 | 3cbb446fc20277b2a4e4b8b8b40aa962 |
RipeMD160 | 58262d1fbdbe4530d8865d3518c6d6e41002610f |
SHA-1 | 943a702d06f34599aee1f8da8ef9f7296031d699 |
SHA-256 | 315f5bdb76d078c43b8ac0064e4a0164612b1fce77c869345bfc94c75894edd3 |
SHA-384 | 55bc556b0d2fe0fce582ba5fe07baafff035653638c7ac0d5494c2a64c0bea1cc57331c7c12a45cdbca7f4c34a089eeb |
SHA-512 | c1527cd893c124773d811911970c8fe6e857d6df5dc9226bd8a160614c0cd963a4ddea2b94bb7d36021ef9d865d5cea294a82dd49a0bb269f51f6e7a57f79421 |
Tiger | b5e5dd73a5894236937084131bb845189cdc5477579b9f36 |
Whirlpool | 238034e71c9f4d712ef02f8fe109bc1f32425530088c1ea13786e1ffdc953a7d567db4aba11ce0226efdd5ed5d55abd087b58122f891e61df996a37e595131b5 |
Как видно, каждый алгоритм выдает значение, которое не имеет совершенно ничего общего с исходными данными. И сколько раз мы бы не высчитывали контрольную сумму строки «Hello, world!», мы каждый раз будем получать одни и те же значения.
Проверка контрольных сумм онлайн
Если нужно проверить контрольную сумму какой-то строки (например, пароля), то проще всего воспользоваться онлайн сервисами. Найти такие онлайн сервисы можно в любом поисковике по запросу «hash online».
Для примера рассмотрим сайт http://www.sha1-online.com. На этом сайте есть строка, в которую нужно ввести исходные данные, и выпадающий список, где нужно выбрать какой алгоритм вы хотите использовать для получения хеш-суммы.
Чтобы проверить приведенную выше таблицу введем строку «Hello, world!», выберем алгоритм MD5 и нажмем на кнопку «hash».
В результате на экране появится строка со значением хеш-функции MD5.
Не сложно заметить, что полученное значение полностью совпадает с тем, которое указано в таблице выше, хотя данные из таблицы были получены другим способом.
Проверка контрольной суммы файла
Если вам нужно проверить контрольную сумму файла (например, образа диска или программы), то вам понадобится специальная программа, которая умеет высчитывать контрольные суммы. Самой популярной программой такого рода является HashTab.
После установки данной программы в свойствах файла появится новая вкладка «Хеш-суммы файлов», в которой будет отображаться хеш-сумма выбранного вами файла.
При этом пользователь можно изменить набор алгоритмов, которые программа HashTab использует для расчета хеш-суммы. Для этого нужно нажать на ссылку «Настройки», выбрать нужные алгоритмы и сохранить изменения с помощью кнопки «ОК».
Полученные значения контрольных сумм можно скопировать, для этого нужно кликнуть на значению с помощью правой кнопки мышки.
Также HashTab позволяет сравнивать файлы. Для этого нужно нажать на кнопку «Сравнить файл» и выбрать другой файл.
Контро́льная су́мма — некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче или хранении. Также контрольные суммы могут использоваться для быстрого сравнения двух наборов данных на неэквивалентность: с большой вероятностью различные наборы данных будут иметь неравные контрольные суммы. Это может быть использовано, например, для обнаружения компьютерных вирусов. Несмотря на своё название, контрольная сумма не обязательно вычисляется путём суммирования.
С точки зрения математики контрольная сумма является результатом хеш-функции, используемой для вычисления контрольного кода — небольшого количества бит внутри большого блока данных, например, сетевого пакета или блока компьютерного файла, применяемого для обнаружения ошибок при передаче или хранении информации. Значение контрольной суммы добавляется в конец блока данных непосредственно перед началом передачи или записи данных на какой-либо носитель информации. Впоследствии оно проверяется для подтверждения целостности данных.
Популярность использования контрольных сумм для проверки целостности данных обусловлена тем, что подобная проверка просто реализуема в двоичном цифровом оборудовании, легко анализируется и хорошо подходит для обнаружения общих ошибок, вызванных наличием шума в каналах передачи данных.
Криптографическая функция MD5 уже почти не используется для определения контрольных сумм, так как оказалось, что для неё можно быстро создавать с помощью современных компьютеров два разных файла, имеющих разную длину в байтах, но одинаковые величины контрольных сумм, подсчитанных с помощью алгоритма MD5.
Использование термина сумма связано с тем, что на заре цифровой связи при байтовых передачах информационными были 7 бит, а восьмой — контрольный — рассчитывался как младший разряд сложения информационных.
Я думаю многие из пользователей интернета, скачивая различные файлы из сети, сталкивались с тем, что время от времени рядом со ссылкой на файл можно увидеть надпись MD5 или SHA1 и длинную абракадабру из символов, идущих следом. Эта статья для тех, кто хочет узнать что это и зачем нужно.
Что это?
Контрольная сумма (или хеш-сумма) — это результат работы специальных алгоритмов. Подробнее о них вы можете почитать хоть в Википедии, если интересно (алгоритм MD5, кстати, уже упоминался мной в статье про пароли). Мы же обсудим лишь практический аспект их применения. Результат этот выглядит как строка символов, которую и можно увидеть рядом со ссылкой на тот или иной файл. Ну а приписки MD5 и SHA1 как раз и означают алгоритм, с помощью которого контрольная сумма была получена.
Вот, например, контрольная сумма дистрибутива Windows 8, который нашелся у меня на жестком диске, которую выдает алгоритм SHA1:
И зачем оно нужно?
Контрольная сумма позволит вам проконтролировать подлинность и целостность скачиваемых (да и любых других) файлов. Контрольные суммы имеют одну приятную особенность — если вы скачали файл не полностью, если он был изменен или если это вообще другой файл, контрольная сумма изменится. То есть, если мы скачиваем откуда-либо файл, и около него написана контрольная сумма, то скачав его, мы можем проверить, скачан ли он полностью и вообще тот ли это файл? Для этого надо получить контрольную сумму скачанного файла и сравнить с той, что была указана на сайте. Если контрольные суммы совпадают — все в порядке. Если отличаются — вы скачали файл не полностью или это вообще не тот файл…
Как узнать контрольную сумму?
Средствами проводника Windows, к сожалению, узнать контрольную сумму MD5 или SHA1 невозможно. Однако существует целый ряд утилит различной сложности, которые позволяют это сделать. Мне больше всего нравится HashTab (ссылка на сайт программы) . Программка совсем небольшая, и ставится как дополнение к проводнику. После установки HashTab, для того, чтобы узнать контрольные суммы файла, просто щелкните по нему правой кнопкой мыши, и выберите «Свойства». Обратите внимание, что в привычном нам окне проводника появилась новая вкладка — «Хеш-суммы файлов». Для больших файлов может потребоваться некоторое время на подсчет сумм.
Обратите внимание, что здесь же есть окошко для сравнения суммы. На скриншоте ниже программа рапортует, что суммы совпадают.
Поиск файлов по контрольным суммам
Есть еще одна небольшая хитрость, связанная с контрольными суммами. Зная контрольную сумму можно не только удостоверится в подлинности и целостности файла, но и найти его. Да-да, если у вас нет самого файла, но вы знаете его контрольную сумму — просто вбейте ее в поисковик, и вы очень быстро найдете именно тот файл, который нужно.
На сриншоте ниже я ввел в Google контрольную сумму OEM-дистрибутива Windows 8.1, как видите, результат на лицо.
“>