Отличается от MD5 тем что для любых входных значений длиной меньше 264 бита выдает строки длиной 160. этот алгоритм называют безопасным так как невозможно вычислительно восстановить исходное сообщение на основе хеш-функции. А так же найти два различных сообщения которые имеют одинаковый хеш. В качестве входа в этом алгоритме используется специальный алгоритм DSA который вычисляет цифровую подпись сообщения M. Принципы лежащие в основе построения алгоритма SHA аналогичны принципам использованным при разработке алгоритма MD4. исходное сообщение дополняется так чтобы его длина стала кратной 512 битам. Используется та же самая процедура что и в MD5. затем инициализируется 5 32 битовых переменных, затем начинается основной цикл алгоритма. Основной цикл вырабатывает блоки сообщения по 512 бит и осуществляет их поочередно для всех блоков. Пять переменных копируются во вспомогательные переменные. Основной цикл состоит из 4 этапов по 20 операций, каждая операция из которых реализует нелинейную функцию над 3 из 5 переменных, а затем производиться сдвиг и сложение.
В алгоритме SHA используется следующий набор нелинейных функций:
fi(x,y,z)=(x^y)v(x-^z) 0<i<19
fi(x,y,z)=x+y+z 20<i<39
fi(x,y,z)=(x^y)v(x^z)v(y^z) 40<i<59
fi(x,y,z)=x+y+z 60<i<79
В алгоритме используются 4 16 ричные констатны, они так же для значений i.
Блок сообщения преобразуется из 16 32 битных слов(Ki) в 80 32 битных слов(Wi) с помощью специального алгоритма.
Главный цикл из 80 операций можно описать следующим образом
For t=0 to 79
Temp=(a<<<5)+ft(b,c,d)+e+Wt+Kt
E=d
D=с
С=b<<<30
A=temp
Схема
Алгоритм SHA это модернизированный MD4 но выдает 160 битное значение. По сравнению с MD4 главными изменениями являются добавление входного расширяющего преобразования, добавлен дополнительный этап и улучшен лавинный эффект. Этот алгоритм более устойчив к атакам полного перебора чем MD4 MD5 так как имеет более длинное хеш-значение.