Функция хэширования SHA

 

Алгоритм безопасного хэширования SHA (Secure Hash Algorithm) принят в качестве стандарта США в 1992 г. и предназначен для использования совместно с алгоритмом цифровой подписи, определенным в стандарте DSS. При вводе сообщения M алгоритм вырабатывает 160-битовое выходное сообщение, называемое сверткой (Message Digest), которая и используется при выработке ЭЦП.

Схема алгоритма:

ball1.gif (146 bytes)    Исходное сообщение дополняется так, чтобы его длина стала кратной 512 битам. При этом сообщение дополняется даже тогда, когда его длина уже кратна указанной. Процесс происходит следующим образом: добавляется единица, затем столько нулей, сколько необходимо для получения сообщения, длина которого на 64 бита меньше, чем кратная 512, и затем добавляется 64-битовое представление длины исходного сообщения.

ball1.gif (146 bytes)    Инициализируются пять 32-битовых переменных следующими шестнадцатеричными константами:

A = 67452301

B = EFCDAB89

C = 98BADCFE

D = 10325476

E = C3D2E1F0    

ball1.gif (146 bytes)     Эти пять переменных копируются в новые переменные a, b, c, d и e соответственно.   

ball1.gif (146 bytes)     Главный цикл может быть описан на псевдокоде следующим образом:

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 - шестнадцатеричные константы, определяемые по следующим формулам:

SHA01.gif (2017 bytes)

функции ft (x, y, z) задаются следующими выражениями:

SHA02.gif (1995 bytes)

значения Wt получаются из 32-битовых подблоков 512-битового блока расширенного сообщения по следующему правилу:

SHA03.gif (1628 bytes)

ball1.gif (146 bytes)     После окончания главного цикла значения a, b, c, d и e складываются с содержимым A, B, C, D и E соответственно и осуществляется переход к обработке следующего 512-битового блока расширенного сообщения. Выходное значение хэш-функции является конкатенацией значений A, B, C, D и E.

 

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

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