Функция хэширования 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