Российский стандарт гост р 34.11-94 определяет алгоритм и процедуру вычисления хэш-функции для любых последовательностей двоичных символов, применяемых в криптографических методах обработки и защиты информации. Этот стандарт базируется на блочном алгоритме шифрования ГОСТ 28147-89, хотя в принципе можно было бы использовать и другой блочный алгоритм шифрования с 64-битовым блоком и 256-битовым ключом.
Данная хэш-функция формирует 256-битовое хэш-значение.
Функция сжатия Hi = f (Mi, Hi–1) (оба операнда Mi и Hi–1 являются 256-битовыми величинами) определяется следующим образом:
1. Генерируются 4 ключа шифрования Kj, j = 1…4, путем линейного смешивания Mi, Hi–1 и некоторых констант Cj.
2. Каждый ключ Kj, используют для шифрования 64-битовых подслов hi слова Hi–1 в режиме простой замены: Sj= (hj). Результирующая последовательность S4, S3, S2, S1 длиной 256 бит запоминается во временной переменной S.
3. Значение Hi является сложной, хотя и линейной функцией смешивания S, Mi и Hi–1.
При вычислении окончательного хэш-значения сообщения M учитываются значения трех связанных между собой переменных:
Hn – хэш-значение последнего блока сообщения;
Z – значение контрольной суммы, получаемой при сложении по модулю 2 всех блоков сообщения;
L – длина сообщения.
Эти три переменные и дополненный последний блок M´ сообщения объединяются в окончательное хэш-значение следующим образом:
H = f (Z Å M´, f (L, f (M´, Hn))).
Данная хэш-функция определена стандартом ГОСТ Р 34.11-94 для использования совместно с pоссийским стандартом электронной цифровой подписи [40, 41].