Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая КСЗІ.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
167.42 Кб
Скачать
    1. Алгоритм md5

На вхід алгоритму надходить вхідний потік даних, хеш якого необхідно знайти. Довжина повідомлення може бути будь-який (в тому числі нульовою). Запишемо довжину повідомлення в L. Це число ціле і невід’ємне. Кратність будь-яким числам не обов'язкова. Після надходження даних йде процес підготовки потоку до обчислень[5].

Далі представлений алгоритм вираховування хеша.

Нижче наведено алгоритм обчислення хешу.

1. Вирівнювання потоку.

Кінець вихідного повідомлення, довжиною L, дописують одиничний біт, потім необхідне число нульових біт так, щоб новий розмір L 'був порівнянний з 448 по модулю 512 (L' mod 512 = 448). Додавання нульових біт виконується, навіть якщо нова довжина, включаючи одиничний біт, вже можна порівняти з 448[6].

2. Додавання довжини повідомлення.

До модифікованого повідомленням дописують 64-бітове представлення довжини даних (кількість біт в повідомленні). Тобто довжина повідомлення T стає кратною 512 (T mod 512 = 0). Якщо довжина вихідного повідомлення перевищує 264 - 1 , то дописують тільки молодші 64 біта. Крім цього, для зазначеного 64-бітного представлення довжини спочатку записуються молодші 32 біта, а потім старші 32 біта[7].

3. Ініціалізація буфера.

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

A = 67 45 23 01;

B = EF CD AB 89;

C = 98 BA DC FE;

D = 10 32 54 76.

У цих змінних будуть зберігатися результати проміжних обчислень. Початковий стан ABCD називається ініціалізованим вектором[8].

4. Обчислення хешу в циклі.

Оригінал тексту розбивається на блоки T, довжиною 512 біт. Для кожного блоку в циклі виконується процедура, наведена на рис.2. Результат обробки всіх блоків вихідного повідомлення в вигляді об'єднання 32-бітних значень змінних ABCD і буде хешем.

Рис.2.1.1 Шаг основного розрахункового циклу

У кожному раунді над змінними ABCD і блоком вихідного тексту Т в циклі (16 ітерацій) виконуються однотипні перетворення за такою схемою.

Рис.2.1.2. Одна ітерація циклу раунду

Умовні позначення.

  1. RF - раундова функція, яка визначається за наступною таблицею.

Таблиця 2.1.1.

Раундові функції RF

№ раунду

Позначення функції

Формула розрахунку

1

F

F(B, C, D) = (B ∧ C) ∨ (¬B ∧ D)

2

G

G(B, C, D) = (B ∧ D) ∨ (¬D ∧ C)

3

H

H(B, C, D) = B ⊕ C ⊕ D

4

I

I(B, C, D) = C ⊕ (¬D ∨ B)

2) tj - j-а 32-бітова частина блоку вихідного повідомлення Т зі зворотним порядком проходження байт;

3) ki - ціла частина константи, яка визначається за формулою

ki = 232 * | sin(i + 16 * (r - 1)) |,

де i - номер ітерації циклу (i = 1..16);

r - номер раунду (r = 1..4).

Аргумент функції sin вимірюється в радіанах.

4) ⊞ - додавання за модулем 232.

5) <<< si – циклічний зсув вліво на si розрядів.

Використовувана 32-бітова частина блоку вихідного повідомлення tj і величина циклічного сдвигу вліво si залежать ві номеру ітерації та приведені в таблиці 2.1.2.

Після 4 раундів нове (модифіковане) значення кожної з змінних ABCD складається (⊞) з вихідним (значенням змінної до 1-го раунду)[9].

5. Перестановка байт в змінних ABCD. Після обробки всіх блоків вихідного повідомлення для кожної змінної виконується зворотна перестановка байт, і в результаті ми отримаємо наш MD5 хеш[10].

Таблиця 2.1.2.

Величини, що використовуються на етапі циклу раунду

№ Ітерації

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

Раунд 1

tj

t1

t2

t3

t4

t5

t6

t7

t8

t9

t10

t11

t12

t13

t14

t15

t16

sj

7

12

17

22

7

12

17

22

7

12

17

22

7

12

17

22

Раунд 2

tj

t2

t7

t12

t1

t6

t11

t16

t5

t10

t15

t4

t9

t14

t3

t8

t13

sj

5

9

14

20

5

9

14

20

5

9

14

20

5

9

14

20

Раунд 3

tj

t6

t9

t12

t15

t2

t5

t8

t11

t14

t1

t4

t7

t10

t13

t16

t3

sj

4

11

16

23

4

11

16

23

4

11

16

23

4

11

16

23

Раунд 4

tj

t1

t8

t15

t6

t16

t4

t11

t2

t9

t13

t7

t14

t5

t12

t3

t10

sj

6

10

15

21

6

10

15

21

6

10

15

21

6

10

15

21

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]