Функция хэширования HAVAL

 

HAVAL - это хэш-функция переменной длины. Она является модификацией MD5. HAVAL обрабатывает сообщение блоками по 1024 бита, в два раза большими блоками, чем у MD5.Используется восемь 32-битовых переменных сцепления, в два раза больше, чем у MD5, и переменное число этапов, от трех до пяти (в каждом 16 действий.) Функция может выдавать хэш-значения длиной 128,160,192,224 или 256 битов.

HAVAL заменяет простые нелинейные функции MD5 на сильно нелинейные функции 7 переменных, каждая из которых удовлетворяет строгому лавинному критерию. На каждом этапе используется одна функция, но при каждом действии входные переменные переставляются различным образом. Используется новый порядок сообщения, и при каждом этапе (кроме первого этапа) используется своя прибавляемая константа. В алгоритме также используется два циклических сдвига.

Ядром алгоритма являются следующие действия:

TEMP = (f(j,A,B,C,D,E,F,G)<<<7)+(h<<<11) + M[i][r(j)+K(j)]

H = G; G=F; F=E; E=D; D=C; C=B; B=A; A=TEMP

Переменное количество этапов и переменная длина выдаваемого значения означают, что существуют 15 версий алгоритма.

 

01LEFT.JPG (1550 bytes)

АИСС БКБ, www.orioncom.ru, tel (495) 783-5510