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

 

В 2001 году NIST принял в качестве стандарта три хэш-функции с существенно большей длиной хэш-кода. Часто эти хэш-функции называют SHA-2 или SHA-256, SHA-384 и SHA-512 (соответственно, в названии указывается длина создаваемого ими хэш-кода). Эти алгоритмы отличаются не только длиной создаваемого хэш-кода, но и длиной обрабатываемого блока, длиной слова и используемыми внутренними функциями.

В данных алгоритмах размер блока сообщения равен m бит. Для SHA-256 m = 512, для SHA-384 и SHA-512 m = 1024. Каждый алгоритм оперирует с w-битными словами. Для SHA-256 w = 32, для SHA-384 и SHA-512 w = 64. В алгоритмах используются обычные булевские операции над словами, а также сложение по модулю SHA2-01.gif (917 bytes), правый сдвиг на n бит SHA2-02.gif (1175 bytes) , где х - w-битное слово, и циклические (ротационные) правый и левый сдвиги на n бит SHA2-03.gif (1225 bytes) и SHA2-04.gif (1216 bytes), где х - w-битное слово.

HA-256 использует шесть логических функций, при этом каждая из них выполняется с 32-битными словами, обозначенными как x, y и z. Результатом каждой функции тоже является 32-битное слово.

SHA2-05.gif (2356 bytes)

SHA-384 и SHA-512 также используют шесть логических функций, каждая из которых выполняется над 64-битными словами, обозначенными как x, y и z. Результатом каждой функции является 64-битное слово.

SHA2-06.gif (2352 bytes)

Предварительная подготовка сообщения, т.е. добавление определенных битов до целого числа блоков и последующее разбиение на блоки выполняется аналогично тому, как это делалось в SHA-1 (конечно, с учетом длины блока каждой хэш-функции). После этого каждое сообщение можно представить в виде последовательности N блоков SHA2-06-2.gif (1408 bytes)

В SHA-256 инициализируются восемь 32-битных переменных, которые послужат промежуточным значением хэш-кода:

a, b, c, d, e, f, g, h

сновой алгоритма является модуль, состоящий из 64 циклических обработок каждого блока  SHA2-06-3.gif (997 bytes):

SHA2-07.gif (1317 bytes)

Где SHA2-07-2.gif (1071 bytes) - шестьдесят четыре 32-битных константы, каждая из которых является первыми 32-мя битами дробной части кубических корней первых 64 простых чисел.

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

SHA2-08.gif (802 bytes)

i-ое промежуточное значение хэш-кода SHA2-08-2.gif (981 bytes) вычисляется следующим образом:

SHA2-09.gif (1181 bytes)

 

 

В случае SHA-512инициализируются восемь 64-битных переменных, которые будут являться промежуточным значением хэш-кода:

a, b, c, d, e, f, g, h

Основой алгоритма является модуль, состоящий из 80 циклических обработок каждого блока SHA2-06-3.gif (997 bytes)

SHA2-10.gif (1322 bytes)

где SHA2-10-2.gif (1057 bytes) - восемьдесят 64-битных констант, каждая из которых является первыми 64-мя битами дробной части кубических корней первых восьмидесяти простых чисел.

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

SHA2-11.gif (829 bytes)

i-ое промежуточное значение хэш-кода H(t) вычисляется следующим образом:

SHA2-12.gif (1162 bytes)

 

SHA-384 отличается  от SHA-512 по двум параметрам:

Другой начальный хэш-код SHA2-12-2.gif (994 bytes).

384-битный дайджест получается из левых 384 битов окончательного хэш-кода Sha2-12-3.gif (1003 bytes):

SHA2-13.gif (523 bytes)

       

ball2.gif (146 bytes)   Сравнительная характеристика SHA-2

 

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

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