Функция хэширования 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 версий алгоритма.
АИСС БКБ, www.orioncom.ru, tel (495) 783-5510