Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Во первых, сообщение дополняется, чтобы его длина была кратной 512 битам. Используется то же дополнение, что и в MD5: сначала добавляется 1, а затем нули так, чтобы длина полученного сообщения была на 64 бита меньше числа, кратного 512, а затем добавляется 64-битовое представление длины оригинального сообщ е-ния.
Инициализируются пять 32-битовых переменных (в MD5 используется четыре переменных, но рассматриваемый алгоритм должен выдавать 160-битовое хэш-значение):
А = 0x67452301
В = 0xefcdab89
С = 0x98badcfe
D = 0x10325476
£ = 0xc3d2elfO
Затем начинается главный цикл алгоритма. Он обрабатывает сообщение 512-битовыми блоками и продолжается, пока не исчерпаются все блоки сообщения.
Сначала пять переменных копируются в другие переменные: Ав а,В в Ь, Св c, Db duE в е.
Главный цикл состоит из четырех этапов по 20 операций в каждом (в MD5 четыре этапа по 16 операций в каждом). Каждая операция представляет собой нелинейную функцию над тремя из а, Ъ, с, d и е, а затем выполняет сдвиг и сложение аналогично MD5. В SHA используется следующий набор нелинейных функций:
f,(X,Y,Z) = (1л Y) v ((Х) л Z), для t=0 до 19
f,(X,Y,Z) = X®Y®Z, для t=20 до 39
ft(X,Y,Z) = (1л Y) v(Xa Z)v(YaZ), для г=40 до 59
f,(X,Y,Z) = Х® Y® Z, для t=60 до 79
в алгоритме используются следующие четыре константы:
К, = 0х5а827999, для г=0 до 19
К, = 0x6ed9ebal, для t=20 до 39
К, = 0x8flbbcdc, для t=40 до 59
К, = 0xca62cld6, для t=60 до 79
(Если интересно, как получены эти числа, то:0х5а827999 = 21/2/4, 0x6ed9ebal = 31/2/4, OxSflbbcdc = 51/2/4, 0xca62cld6 = 101/2/4.)
Блок сообщения превращается из 16 32-битовых слов (М0 по М15) в 80 32-битовых слов (W0 no W19) с помощью следующего алгоритма:
^ = М(,дляг = 0по 15
Wt = W_3 © W,* ® Wt.u ® WtA6) <« 1, для t = 16 по 79
(В качестве интересного замечания, в первоначальной спецификации SHA не было циклического сдвига вле-
во. Изменение "исправляет технический изъян, который делал стандарт менее безопасным, чем предполагалось " 1543]. NSA отказалось уточнить истинную причину изъяна.)
Если t - это номер операции (от 1 до 80), W, представляет собой г-ый подблок расширенного сообщения, а <«s - это циклический сдвиг влево на s битов, то главный цикл выглядит следующим образом:
FOR t = 0 to 79
TEMP = (а <<< 5) + f,(b,c,d) + e + Wt + Kt
e = d
d = c
c = b <« 30
b = a
a = TEMP
Ha 11-й показана одна операция. Сдвиг переменных выполняет ту же функцию, которую в MD5 выполняет использование в различных местах различных переменных.
W-, Kt
Рис. 18-7. Одна операция SHA.
После всего этого а, Ь, с, d и е добавляются к А, В, С D и Е, соответственно, и алгоритм продолжается для следующего блока данных. Окончательным результатом служит объединение A, B, C DhE.
Дата публикования: 2014-11-03; Прочитано: 743 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!