Значения параметров (начальные данные)

Инициализационные векторы

Значение инициализационного вектора IV для функции хэширования с длиной хэш-кода 512 бит равно 0512. Значение инициализационного вектора для функции хэширования с длиной хэш-кода 256 бит равно (00000001 )64.

Нелинейное взаимно однозначное преобразование множества двоичных векторов


Нелинейное преобразование множества двоичных векторов V8 задается подстановкой
, (1) где .
Значения подстановки записаны ниже в виде массива :
p’=(252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, 77, 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, 95, 193, 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, 1, 142, 79, 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, 127, 212, 211, 31, 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, 162, 253, 58, 206, 204, 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, 19, 71, 156, 183, 93, 135, 21, 161, 150, 41, 16, 123, 154, 199, 243, 145, 120, 111, 157, 158, 178, 177, 50, 117, 25, 61, 255, 53, 138, 126, 109, 84, 198, 128, 195, 189, 13, 87, 223, 245, 36, 169, 62, 168, 67, 201, 215, 121, 214, 246, 124, 34, 185, 3, 224, 15, 236, 222, 122, 148, 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, 167, 151, 96, 115, 30, 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, 173, 69, 70, 146, 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, 7, 88, 179, 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, 225, 27, 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, 32, 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, 182).

 

 


5.3 Перестановка байт

Значения перестановки t, заданной на множестве {0, ..., 63}, записаны ниже в виде массива :
t=(0, 8, 16, 24, 32, 40, 48, 56, 1,9, 17, 25, 33, 41, 49, 57, 2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59, 4, 12, 20, 28, 36, 44, 52, 60, 5, 13, 21, 29, 37, 45, 53, 61, 6, 14, 22, 30, 38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63).

 

 


5.4 Линейное преобразование множества двоичных векторов

Линейное преобразование множества двоичных векторов V64 задается умножением справа на матрицу A над полем , строки которой записаны ниже последовательно в шестнадцатеричном виде. Строка матрицы с номером j , где j=0,...,63, записанная в виде , где , i=0,...,15, есть .

 


Здесь в одной строке записаны четыре строки матрицы A, при этом в строке с номером i,i= 0,...,15, записаны строки матрицы A с номерами , j=0,...,3, в следующем порядке (слева направо):
4i+0, 4i+1, 4i+2,4i+3.
Результат умножения вектора на матрицу есть вектор :

 

, (2)


где

для всех i=0,...,63.

Итерационные константы

Итерационные константы записаны в шестнадцатеричном виде. Значение константы, записанное в виде , где , i=0,...,127, есть :

 

Преобразования

При вычислении хэш-кода сообщения * используются следующие преобразования:

, , , ; (3)

, , (4)

где , , i=0, ..., 63;
, , (5)

где , , i=0, …, 63;

 

, , (6)

где , , i=0, ..., 7.


Функция сжатия

Значение хэш-кода сообщения * вычисляется с использованием итерационной процедуры. На каждой итерации вычисления хэш-кода используется функция сжатия:
, , (7)значение которой вычисляется по формуле

, (8)

где .
Значения , 1 ,...,13, вычисляются следующим образом:
; (9)
, i=2, ..., 13. (10)

Для краткости вместо g0512 будем использовать обозначение g0.

Процедура вычисления хэш-функции

Исходными данными для процедуры вычисления хэш-кода является подлежащее хэшированию сообщение * и -инициализационный вектор.
Алгоритм вычисления функции H состоит из следующих этапов.

 

Этап 1

Присвоить начальные значения текущих величин:

 

1.1 ;
1.2 ;
1.3 ;
1.4 Перейти к этапу 2.


8.2 Этап 2

2.1 Проверить условие 512.
При положительном исходе перейти к этапу 3.
В противном случае выполнить последовательность вычислений по 2.2-2.7.
2.2 Вычислить подвектор сообщения . Далее выполнить последовательность вычислений:
2.3 .
2.4
2.5
2.6 .
2.7 Перейти к шагу 2.1.

 

Этап 3

3.1 .
3.2 .
3.3 .
3.4 .
3.5 .
3.6

 

Конец работы алгоритма

Значение величины , полученное на шаге 3.6, является значением функции хэширования .