Функции хеширования. Хеш-функция MD5 (Методические указания к практической работе № 6)

Страницы работы

Фрагмент текста работы

Практическая работа №6

по дисциплине "Криптология"

на тему

"Функции хеширования. Хеш-функция MD5"

Цель. Выработать у студента умения и навыки работы с хеш-функцией MD5, а также способы применения её на практике.

Задание.

1. Ознакомиться с алгоритмом работы хеш-функции MD5

2. Выполнить программную реализацию хеширования данных с помощью хеш-функции MD5.

3. Протестировать работу программы.

4. Оформить отчёт.

Результат выполнения практической работы должен включать:

1.  Отчёт о выполненной практической работе в печатном  виде

2.  Работоспособную программную реализацию поставленной задачи на любом языке программирования

Отчёт о выполненной практической работе должен включать:

1.  Титульный лист с указанием номера практической работы

2.  Постановку задачи

3.  Теоретический материал по теме практического задания

4.  Исходные данные, которые были применены для выполнения поставленной задачи

5.  Текст программы

6.  Результаты работы программы

7.  Выводы

Программа должна выполнять следующее:

1.  Вычислять хеш значение для произвольной текстовой строки

2.  Вычислять хеш значение для файла произвольной длины

3.  При хешировании файлов вычислять время (в секундах) и скорость хеширования(в Кб/с или Мб/с)

4.  Вычислять идентичность 2 строк на основе сравнения их хеш значений

5.  Вычислять идентичность 2 файлов на основе сравнения их хеш значений

6.  Вычислять неизменность строки на основе сравнения данного хеш значения(которое было заранее вычислено) и вычисленного хеш значения для предоставленной строки.

7.  Вычислять неизменность файла на основе сравнения данного хеш значения(которое было заранее вычислено) и вычисленного хеш значения для предоставленного файла.

8.  Выводить результаты работы программы на экран. В качестве результата должны быть выведены:

a.  Для пунктов 1. и 2.хеш значения для строки(файла),

b.  Для пункта 3. – время и скорость хеширования , имя файла и размер файла.

c.  Для пунктов 4.-5. если хеш-значения 2 строк(файлов) равны то выводить сообщение что  2 строки(2 файла) идентичны, иначе – что 2 строки( 2 файла) различаются

d.  Для пунктов 6.-7 если данное хеш значение для строки (файла) и вычисленное хеш значение совпадают, то вывести сообщение, что строка (файл) не содержит ошибок, иначе вывести сообщение, что строка (файл) искажена.


Теоретические сведения.

Схема работы алгоритма MD5

На вход алгоритма поступает входной поток данных, хеш которого необходимо найти, а ан выходе алгоритма получаем 128-битное хеш значение. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и не отрицательное. Кратность каким-либо числам не обязательна. После поступления даных идет процесс подготовки потока к вычислениям.

Ниже приведены 5 шагов алгоритма:

Шаг 1. Выравнивание потока

Входные данные выравниваются так, чтобы их размер был сравним с 448 по модулю 512 (L’ = 512 × N + 448). Сначала дописывают единичный бит в конец потока, затем необходимое число нулевых бит (выравнивание происходит, даже если длина уже конгруэнтна — сравнима с 448).

Шаг 2. Добавление длины сообщения

В оставшиеся 64 бита дописывают 64-битное представление длины данных до выравнивания. Если длина превосходит 264 − 1, то дописывают только младшие биты. После этого длина потока станет кратной степеням двойки — 16, 32. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит(разбитыми на 16 32-битовых подблоков).

Шаг 3. Инициализация буфера

Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами:

A =0x01234567

B = 0x89abcdef

C = 0xfedcba98

D =0x76543210

В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором.

Шаг 4. Вычисление в цикле

Четыре переменных копируются в другие переменные : A в a, B в b, C в c и D в d.)

Главный цикл состоит из четырех очень похожих На каждом этапе 16 раз используются различные операции. Каждая операция представляет собой нелинейную функцию над тремя из a, b, c и d. Затем она добавляет этот результат к четвертой переменной, подблоку текста и константе. Далее результат циклически сдвигается вправо на переменное число битов и добавляет результат к одной из пер еменных a, b, c и d. Наконец результат заменяет одну из переменных a, b, c и d. Существуют четыре нелинейных функции, используемые по одной в каждой операции (для каждого этапа – другая функция).

1)  Fun F(X,Y,Z) = (X\wedge{Y}) \vee (\neg{X} \wedge{Z})

Похожие материалы

Информация о работе

Предмет:
Криптология
Тип:
Методические указания и пособия
Размер файла:
66 Kb
Скачали:
0