Введем три функции для длины 256 бит:
где - перестановка байта - номер байта.
Число уникально представляется через целые числа и правило перестановки записывается:
Функция компрессии двух 256-битовых блоков сообщения и результата хэширования предыдущего блока имеет вид:
Вычисление :
Вычисления ключей и производятся через вспомогательные функции:
где
Сначала пять переменных копируются в другие переменные:
a=A, b=B, c=C, d=D, e=E;
Главный цикл состоит их четырех этапов по 20 операций в каждом. Каждая операция представляет собой нелинейную функцию над тремя из ,,, и , а затем выполняется сдвиг и сложение. В SHA используется следующий набор нелинейных функций:
в алгоритме используются следующие четыре константы:
Если - это номер операции (), представляет собой -ый подблок расширенного сообщения, - это циклический сдвиг влево на битов, то главный цикл выглядит следующим образом:
for t=0 to 79 TEMP=(a<<<5)+f_t(b,c,d)+e+W[t]+K[t] e=d d=c c=b<<<30 b=a a=TEMP
После всего этого и добавляются к и , соответственно, и алгоритм продолжается для следующего блока данных. Окончательным результатом служит объединение и .
A=A+a;B=B+b;C=C+c;D=D+d;E=E+e;
Шнайер 329