Статьи » Практикум » Алгоритмы хеширования
Алгоритмы хеширования

Хеш

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

Эти комбинации называют хешем (или отпечатком, дайджестом). А преобразование,соответственно, хешированием (иногда хэшированием). Не будет лишним провести аналогию с процессом перевозки груза.

Перевозя ящики с различными предметами, мы запоминаем в точке отправления количество погруженных ящиков. Затем, на месте прибытия, сравниваем количество полученных ящиков с количеством погруженных на транспорт. Сравнивают не содержимое ящиков, а лишь их количественное описание. Это описание и будет аналогом хеша.

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

Вторые, с помощью дополнительных средств, гарантируют целостность данных. Они применимы в системах как с доверяющими, так и не доверяющими друг другу пользователями.

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

Алгоритмы

Рассмотрим наиболее популярные алгоритмы хеширования: SHA-1 и MD5 (табл. 1).

Параметр Алгоритмы
MD5 SHA-1
Длинна хеша 128 бит 160 бит
Размер блока обработки 512 бит 512 бит
Число итераций (повторений) 64 (4 цикла по 16 итераций в каждом) 80
Число элементарных логических функций 4 3
Число дополнительных констант 64 4

Сравнивая оба алгоритма можно выделить некоторые моменты:
Безопасность: наиболее очевидное и наиболее важное различие состоит в том, что хеш SHA-1 на 32 бита длиннее, чем хеш MD5. SHA-1 является более стойким алгоритмом.
Скорость: так как оба алгоритма выполняют сложение по модулю 232, они рассчитаны на 32-битную архитектуру. SHA-1 содержит больше шагов (80 вместо 64) и выполняется на 160-битном буфере, по сравнению с 128-битным буфером MD5. Таким образом, SHA-1 должен выполняться приблизительно на 25% медленнее, чем MD5.
Простота и компактность: оба алгоритма просты и в описании, и в реализации не требуют больших программ или подстановочных таблиц.

Зачем все это ?

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

Проверка хеша в Windows

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

Рассмотрим работу с файловым менеджером FreeCommander. Установите и запустите программу. Если задан файл контрольной суммы в файле *.md5, выберите его, нажмите Файлы > Проверить контрольные суммы MD5 ... Проследите чтобы и проверяемый файл и файл контрольной суммы находились в одной папке.

Если же контрольная сумма задана в текстовом виде, то проделайте следующее: запустите текстовый редактор, к примеру Notepad++, и создайте файл содержащий: контрольная сумма *имя файла включая расширение. К примеру - DABE717501313FEA4E70D6CC30EEA014 notepad++.exe. Откройте текстовый редактор, внесите эту строку, и нажмите Сохранить как ..., незабудьте указать расширение файла MD5.

Дабы избежать всей этой рутинной работы, установите себе программку Hash Tab, после установки в Свойствах файла появится вкладка со значениями CRC32, SHA-1, MD5, с возможностью сравнения контрольных сумм.

Hash Tab

Все права сохранены © Каталог бесплатных программ

Перепубликация материалов возможна только с устного или письменного разрешения администрации сайта!