Функция хэширования SHA
Алгоритм безопасного хэширования SHA (Secure Hash Algorithm) принят в качестве стандарта США в 1992 г. и предназначен для использования совместно с алгоритмом цифровой подписи, определенным в стандарте DSS. При вводе сообщения M алгоритм вырабатывает 160-битовое выходное сообщение, называемое сверткой (Message Digest), которая и используется при выработке ЭЦП.
Схема алгоритма:
Исходное сообщение дополняется так, чтобы его длина стала кратной 512 битам. При этом сообщение дополняется даже тогда, когда его длина уже кратна указанной. Процесс происходит следующим образом: добавляется единица, затем столько нулей, сколько необходимо для получения сообщения, длина которого на 64 бита меньше, чем кратная 512, и затем добавляется 64-битовое представление длины исходного сообщения.
Инициализируются пять 32-битовых переменных следующими шестнадцатеричными константами:
A = 67452301
B = EFCDAB89
C = 98BADCFE
D = 10325476
E = C3D2E1F0
Эти пять переменных копируются в новые переменные a, b, c, d и e соответственно.
Главный цикл может быть описан на псевдокоде следующим образом:
for (t = 0; t < 80; t++)
{ temp = (a <<< 5) + ft (b,c,d) + e + Wt + Kt;
e = d; d = c; c = b <<< 30; b = a; a = temp; },
где
<<< - операция циклического сдвига влево;
Kt - шестнадцатеричные константы, определяемые по следующим формулам:
функции ft (x, y, z) задаются следующими выражениями:
значения Wt получаются из 32-битовых подблоков 512-битового блока расширенного сообщения по следующему правилу:
После окончания главного цикла значения a, b, c, d и e складываются с содержимым A, B, C, D и E соответственно и осуществляется переход к обработке следующего 512-битового блока расширенного сообщения. Выходное значение хэш-функции является конкатенацией значений A, B, C, D и E.
АИСС БКБ, www.orioncom.ru, tel (495) 783-5510