Функция хэширования 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. В алгоритмах используются обычные булевские операции над словами, а также сложение по модулю , правый сдвиг на n бит , где х - w-битное слово, и циклические (ротационные) правый и левый сдвиги на n бит и , где х - w-битное слово.
HA-256 использует шесть логических функций, при этом каждая из них выполняется с 32-битными словами, обозначенными как x, y и z. Результатом каждой функции тоже является 32-битное слово.
SHA-384 и SHA-512 также используют шесть логических функций, каждая из которых выполняется над 64-битными словами, обозначенными как x, y и z. Результатом каждой функции является 64-битное слово.
Предварительная подготовка сообщения, т.е. добавление определенных битов до целого числа блоков и последующее разбиение на блоки выполняется аналогично тому, как это делалось в SHA-1 (конечно, с учетом длины блока каждой хэш-функции). После этого каждое сообщение можно представить в виде последовательности N блоков
В SHA-256 инициализируются восемь 32-битных переменных, которые послужат промежуточным значением хэш-кода:
a, b, c, d, e, f, g, h
сновой алгоритма является модуль, состоящий из 64 циклических обработок каждого блока :
Где - шестьдесят четыре 32-битных константы, каждая из которых является первыми 32-мя битами дробной части кубических корней первых 64 простых чисел.
Wt вычисляются из очередного блока сообщения по следующим правилам:
i-ое промежуточное значение хэш-кода вычисляется следующим образом:
В случае SHA-512инициализируются восемь 64-битных переменных, которые будут являться промежуточным значением хэш-кода:
a, b, c, d, e, f, g, h
Основой алгоритма является модуль, состоящий из 80 циклических обработок каждого блока
где - восемьдесят 64-битных констант, каждая из которых является первыми 64-мя битами дробной части кубических корней первых восьмидесяти простых чисел.
Wt вычисляются из очередного блока сообщения по следующим правилам:
i-ое промежуточное значение хэш-кода H(t) вычисляется следующим образом:
SHA-384 отличается от SHA-512 по двум параметрам:
Другой начальный хэш-код .
384-битный дайджест получается из левых 384 битов окончательного хэш-кода :
Сравнительная характеристика SHA-2
АИСС БКБ, www.orioncom.ru, tel (495) 783-5510