Алгоритм безопасного хеширования SHA-1 был опубликован в 1995 году в качестве замены использовавшегося до этого алгоритма хеширования SHA-0, в котором была обнаружена уязвимость.
Для сообщения произвольной длины l, не превышающей 2^64 бит, алгоритм SHA-1 формирует 160-битный хеш-образ.
Процедура формирования хеш-образа состоит из следующих шагов.
- Весь исходный текст разбивается на блоки по 512 бит. В случае если длина исходного текста не кратна 512 битам, производится его выравнивание за счёт добавления в конец бита со значением 1, m нулевых битов и 64-битного представления значения длины исходного сообщения (рис. 12).
Рис. 12 . Выравнивание исходного сообщения
- Инициализируется пять 32-битных рабочих переменных A, B, C, D, E:
- Выполняется обработка очередных 512 бит исходного текста. Для этого значения переменных A, B, C, D, E копируются в переменные a, b, c, d, e и далее для t от 1 до 80 выполняется преобразование значений данных переменных по схеме, изображенной на рис. 13.
Рис. 13 . Схема итерации алгоритма SHA-1
Каждая из 80 итераций может быть записана следующим образом:
где «+» – операция сложения по модулю 2^32, ft(X, Y, Z) – нелинейная функция, имеющая следующий вид:
(22)
где «&» – побитовая операция «И», «|» – побитовая операция «ИЛИ»,
«!» – операция побитового инвертирования, «» – операция побитового сложения по модулю 2. Параметр Kt принимает четыре различных значения в зависимости от номера текущей итерации:
Kt = 5A82799916, ;
Kt = 6ED9EBA116, ;
Kt = 8F1BBCDC16, ;
Kt = CA62C1D616, .
«<<<» – операция циклического сдвига на 30 либо 5 бит влево, Wt – одно из шестнадцати 32-битных слов 512-битного блока сообщения при либо значение, определяемое в соответствии со следующим выражением при :
. (23)
4. Значения переменных a, b, c, d, e независимо друг от друга складываются по модулю 2^32 со значениями переменных A, B, C, D, E, в которые затем и помещаются полученные результаты.
5. Шаги 3–4 выполняются до тех пор, пока не будет обработан весь текст.
После обработки последнего блока текста значение хеш-образа формируется как ABCDE.
Автор: Ярмолик, В. Н.