Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Описание 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, Блок сообщения превращается из 16 32-битовых слов (М0 по М15) в 80 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 и Е.
|