Логика цикла

Каждый цикл состоит из 16-ти шагов, в которых производятся операции с буфером ABCD. Каждый шаг можно представить в виде схемы:

ABCD- 4 слов из буфера

После каждого шага происходит циклический сдвиг на одно слово.

CLSs- циклический сдвиг влево на s бит для 32- битного аргумента.

X[k]- к-е 32-битное слово в q-м 512-битном блоке сообщения.

T[i] - i-е 32-битное слово в таблице T.

+ - сложение по модулю 232.

На каждом из 4х циклов используется одна из 4х логических функций. Каждая элементарная функция получает три 33-битных слова и выдает 332-битную последовательность. Каждая функция представляет собой множество побитовых логических операций, где n-й бит выхода является функцией n-го бита от трех входов.

A←B+ CLSs(A+f(B,C,D)+x[k]+T[i])

fF=(B C)∨( =(B & C) or (not B & D)

fG=(B∧D)∨(C∧ )=(B & D) or (C & not D)

fH=B xor C xor D

fI=C xor (B & not D)

Массив из 32-битных слов x [0..15] содержит значение текущего 512-битного входного блока. На каждом этапе изменяется только одно из четырех слов. Каждое следующее слово меняется 16 раз. А затем 17й получил окончания выхода. В результате алгоритм MD-5 может быть просто записан следующим образом:

MD0=IV

MDq+1= MDq+fI(Yq, fH(Yq,fG(Yq,fF(Yq, MDq))))

MD= MDi-1

Где IV – значение буфера ABCD, определенное на шаге 3.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: