Логика выполнения ГОСТ Р 34.11-94

 

Входными параметрами алгоритма являются:

ball1.gif (146 bytes)     исходное сообщение М произвольной длины;

ball1.gif (146 bytes)     стартовый вектор хэширования Н, длина которого равна 256 битам;

ball1.gif (146 bytes)     контрольная сумма znak11-2.gif (856 bytes), начальное значение которой равно нулю и длина равна 256 битам;

ball1.gif (146 bytes)     переменная L, начальное значение которой равно длине сообщения.

Сообщение М делится на блоки длиной 256 бит и обрабатывается справа налево. Очередной блок i обрабатывается следующим образом:

ball1.gif (146 bytes)    H = X(Mi, H)

ball1.gif (146 bytes)    znak11-2.gif (856 bytes)= znak11-2.gif (856 bytes)znak7.gif (866 bytes)' Mi

ball1.gif (146 bytes)    L рассматривается как неотрицательное целое число, к этому числу прибавляется 256 и вычисляется остаток от деления получившегося числа на 2 в степени 256. Результат присваивается L.

Где znak7.gif (866 bytes)' обозначает следующую операцию: znak11-2.gif (856 bytes)и Mi рассматриваются как неотрицательные целые числа длиной 256 бит. Выполняется обычное сложение этих чисел и находится остаток от деления результата сложения на 2 в степени 256. Этот остаток и является результатом операции.

Самый левый, т.е. самый последний блок М' обрабатывается следующим образом:

ball1.gif (146 bytes)    Блок добавляется слева нулями так, чтобы его длина стала равна 256 битам.

ball1.gif (146 bytes)     Вычисляется znak11-2.gif (856 bytes)= znak11-2.gif (856 bytes)znak7.gif (866 bytes)' Mi

ball1.gif (146 bytes)    L рассматривается как неотрицательное целое число, к этому числу прибавляется длина исходного сообщения М и находится остаток от деления результата сложения на 2 в степени 256.

ball1.gif (146 bytes)     Вычисляется Н = X (М', Н).

ball1.gif (146 bytes)     Вычисляется Н = X (L, Н).

ball1.gif (146 bytes)     Вычисляется Н = X (znak11-2.gif (856 bytes), Н).

Значением функции хэширования является Н.

 

01LEFT.JPG (1550 bytes)01RIGHT.JPG (1552 bytes)

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