Является модернизированным алгоритмом MD4. результатом как и в MD4 является 128 битное хеш-значение. MD5 обрабатывает входной текст состоящий из 512 битных блоков разбитых на 16 32 битных подблоков. Выходом алгоритма является набор из 4 32 битных блоков которые объединяются в 128 битное хеш-значение. Прежде чем выполняются основные этапы формирования функции MD5 необходимо выполнить следующее преобразование. Для этого необходимо:
дополнить сообщение таким образом, чтобы его длина была на 64 бита короче числа кратного 512
затем к результату добавляется 64 битное представление длины исходного сообщения (до дополнения, без нолей)
затем инициализируются 4 переменные, которые затем копируются во вспомогательные переменные
основной цикл хеш-функции состоит из 4 практически одинаковых этапов, на каждом этапе 16 раз используются различные операции. Каждая операция представляет собой нелинейную функцию над 3 переменными из 4, затем результат суммируется с 4 переменной, подблоком текста и некоторой константой. Далее этот результат циклически сдвигается вправо на переменное число бит и суммируется с одной из переменной. Затем окончательно результат заменяет одну из переменных.
На каждом из 4 этапов используется своя нелинейная функция.
F(x,y,z)=(x^y)v(x-^z)
G(x,y,z)=(x^y)v(x-^z-)
H(x,y,z)=x+y+z
I(x,y,z)=x+(x-^z-)
По сравнению с MD4 MD5 улучшен следующим образом: добавлен 4 этап, в каждом действии используется уникальная аддитивная константа, была изменена функция G