Интернет магазин китайских планшетных компьютеров |
||||
Компьютеры - MD5 - Алгоритм MD513 июня 2011Оглавление: 1. MD5 2. Алгоритм MD5 3. MD5-хеши 4. Примеры использования На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой. Запишем длину сообщения в L. Это число целое и неотрицательное. Кратность каким-либо числам необязательна. После поступления данных идёт процесс подготовки потока к вычислениям. Ниже приведены 5 шагов алгоритма: Шаг 1. Выравнивание потокаСначала дописывают единичный бит в конец потока, затем необходимое число нулевых бит. Входные данные выравниваются так, чтобы их новый размер L' был сравним с 448 по модулю 512. Выравнивание происходит, даже если длина уже сравнима с 448. Шаг 2. Добавление длины сообщенияВ оставшиеся 64 бита дописывают 64-битное представление длины данных до выравнивания. Сначала записывают младшие 4 байта. Если длина превосходит 2 − 1, то дописывают только младшие биты. После этого длина потока станет кратной 512. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит. Шаг 3. Инициализация буфераДля вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами: А = 01 23 45 67; В = 89 AB CD EF; С = FE DC BA 98; D = 76 54 32 10. В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором. Определим ещё функции и константы, которые нам понадобятся для вычислений.
Шаг 4. Вычисление в циклеЗаносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками.
Раунд 1 /* a = b + + X + T) <<< s). */ Раунд 2 /* a = b + + X + T) <<< s). */ Раунд 3 /* a = b + + X + T) <<< s). */ Раунд 4 /* a = b + + X + T) <<< s). */ Суммируем с результатом предыдущего цикла: A = AA + A B = BB + B C = CC + C D = DD + D После окончания цикла необходимо проверить, есть ли ещё блоки для вычислений. Если да, то изменяем номер элемента массива и переходим в начало цикла. Шаг 5. Результат вычисленийРезультат вычислений находится в буфере ABCD, это и есть хеш. Если выводить побайтово начиная с младшего байта A и закончив старшим байтом D, то мы получим MD5 хеш. Сравнение MD5 и MD4Алгоритм MD5 происходит от MD4. В новый алгоритм добавили ещё один раунд, теперь их стало 4 вместо 3 в MD4. Добавили новую константу для того, чтобы свести к минимуму влияние входного сообщения, в каждом раунде на каждом шаге и каждый раз константа разная, она суммируется с результатом F и блоком данных. Изменилась функция G = XZ v) вместо. Результат каждого шага складывается с результатом предыдущего шага, из-за этого происходит более быстрое изменение результата. Изменился порядок работы с входными словами в раундах 2 и 3. Различия в скорости работы представлены в таблице:
Необходимо было вычислить 10 000 хешей для сообщения длиной 10 000 байт. В качестве реализаций использовались OpenSSL и RFC 1321. Просмотров: 4704
|