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