Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Описание SHA






Во - первых, сообщение дополняется, чтобы его длина была кратной 512 битам. Используется то же дополне­ние, что и в MD5: сначала добавляется 1, а затем нули так, чтобы длина полученного сообщения была на 64 бита меньше числа, кратного 512, а затем добавляется 64-битовое представление длины оригинального сообщения.

Инициализируются пять 32-битовых переменных (в MD5 используется четыре переменных, но рассматриваемый алгоритм должен выдавать 160-битовое хэш-значение):

А = 0× 67452301

В = 0 × efcdab89

С = 0 × 98badcfe

D = 0× 10325476

E = 0× c3d2e1f0

Затем начинается главный цикл алгоритма. Он обрабатывает сообщение 512-битовыми блоками и продол­жается, пока не исчерпаются все блоки сообщения.

Сначала пять переменных копируются в другие переменные: А в а, В в b, С в с, D в d и Е в е.

Главный цикл состоит из четырех этапов по 20 операций в каждом (в MD5 четыре этапа по 16 операций в каждом). Каждая операция представляет собой нелинейную функцию над тремя из а, b, с, d и е, а затем выполняет сдвиг и сложение аналогично MD5. В SHA используется следующий набор нелинейных функций:

ft (X, Y, Z) = (Х Ù Y) Ú ((Ø X) Ù Z), для t=0 до 19

ft (X, Y, Z) = Х Å Y Å Z, для t=20 до 39

ft (X, Y, Z) = (Х Ù Y) Ú (Х Ù Z) Ú (Y Ù Z), для t=40 до 59

ft (X, Y, Z) = Х Å YÅ Z, для t=60 до 79

в алгоритме используются следующие четыре константы:

Кt = 0 × 5а827999, для t=0 до 19

Кt = 0 × 6ed9eba1, для t=20 до 39

Кt = 0 × sf1bbcdc, для t=40 до 59

Кt = 0 × ca62cld6, для t=60 до 79

(Если интересно, как получены эти числа, то: 0× 5а827999 = 21/2/4,
0× 6ed9ebal = 31/2/4, 0× sflbbcdc = 51/2/4, 0× ca62cld6 = 101/2/4.)

Блок сообщения превращается из 16 32-битовых слов (М0 по М15) в 80
32-битовых слов (Wo no W79) с помощью следующего алгоритма:

Wt = Mt, для t = 0 по 15

Wt = (Wt-3 Å Wt-8. Å Wt-14 Å Wt-16) < < < 1, для t = 16 no 79

Если t - это номер операции (от 1 до 80), W t, представляет собой t-ый подблок расширенного сообщения, а < < < s - это циклический сдвиг влево на s битов, то главный цикл выглядит следующим образом:

FOR t = 0 to 79

TEMP = (а < < < 5) +ft (b, c, d) + e + W t + Kt

e = d

d=c

b = a

c = b< < < 30

a = TEMP

Сдвиг переменных выполняет ту же функцию, которую в MD5 выполняет использование в различных местах различных переменных.

Рисунок 22 — Одна операция SHA.

После всего этого а, b, с, d и е добавляются к А, В, С, D и Е, соответственно, и алгоритм продолжается для следующего блока данных. Окончательным результатом служит объединение А, В, C, D и Е.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.