Хэш функция мд5 (md5)
Содержание:
- Методы
- 5 способов создать винтажный эффект в Photoshop
- Как расшифровать MD5 в режиме онлайн
- Как включить разделение экрана на Андроиде
- Проблемы надежности MD5
- Алгоритм MD5
- Безопасное использование MD5
- StartManager 1.4 — Развитие альтернативного стартера Промо
- Запуск обновления на Windows
- Примеры использования
- Для чего применяется MD5
- Статьи по темеRelated topics
- Популярные хеш-функции Python
- Что такое хеши и как они используются
- История и уязвимости MD5
Методы
Освобождает все ресурсы, используемые классом HashAlgorithm.Releases all resources used by the HashAlgorithm class. (Унаследовано от HashAlgorithm) |
|
Вычисляет хэш-значение для заданного массива байтов.Computes the hash value for the specified byte array. (Унаследовано от HashAlgorithm) |
|
Вычисляет хэш-значение для заданной области заданного массива байтов.Computes the hash value for the specified region of the specified byte array. (Унаследовано от HashAlgorithm) |
|
Вычисляет хэш-значение для заданного объекта Stream.Computes the hash value for the specified Stream object. (Унаследовано от HashAlgorithm) |
|
Асинхронно вычисляет хэш-значение для заданного объекта Stream.Asynchronously computes the hash value for the specified Stream object. (Унаследовано от HashAlgorithm) |
|
Освобождает все ресурсы, используемые текущим экземпляром класса HashAlgorithm.Releases all resources used by the current instance of the HashAlgorithm class. (Унаследовано от HashAlgorithm) |
|
Освобождает неуправляемые ресурсы, используемые объектом HMACMD5, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the HMACMD5 and optionally releases the managed resources. |
|
Освобождает неуправляемые ресурсы, используемые объектом HMAC, и, если допускается изменение ключа, опционально освобождает управляемые ресурсы.Releases the unmanaged resources used by the HMAC class when a key change is legitimate and optionally releases the managed resources. (Унаследовано от HMAC) |
|
Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object. (Унаследовано от Object) |
|
Служит хэш-функцией по умолчанию.Serves as the default hash function. (Унаследовано от Object) |
|
Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance. (Унаследовано от Object) |
|
Передает данные из объекта в HMAC-алгоритм для вычисления HMAC.Routes data written to the object into the HMAC algorithm for computing the HMAC. |
|
Если переопределено в производном классе, передает данные, записанные в объект, в HMAC-алгоритм для вычисления значения HMAC.When overridden in a derived class, routes data written to the object into the HMAC algorithm for computing the HMAC value. (Унаследовано от HMAC) |
|
Передает данные из объекта в HMAC-алгоритм для вычисления HMAC.Routes data written to the object into the HMAC algorithm for computing the HMAC. |
|
Передает данные из объекта в HMAC-алгоритм для вычисления HMAC.Routes data written to the object into the HMAC algorithm for computing the HMAC. (Унаследовано от HMAC) |
|
Завершает вычисление HMAC после обработки последних данных алгоритмом.Finalizes the HMAC computation after the last data is processed by the algorithm. |
|
Если переопределено в производном классе, завершает вычисление HMAC после обработки последних данных алгоритмом.When overridden in a derived class, finalizes the HMAC computation after the last data is processed by the algorithm. (Унаследовано от HMAC) |
|
Сбрасывает хэш-алгоритм в исходное состояние.Resets the hash algorithm to its initial state. |
|
Инициализирует новый экземпляр реализации по умолчанию класса HMAC.Initializes an instance of the default implementation of HMAC. (Унаследовано от HMAC) |
|
Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object. (Унаследовано от Object) |
|
Возвращает строку, представляющую текущий объект.Returns a string that represents the current object. (Унаследовано от Object) |
|
Вычисляет хэш-значение для заданной области входного массива байтов и копирует указанную область входного массива байтов в заданную область выходного массива байтов.Computes the hash value for the specified region of the input byte array and copies the specified region of the input byte array to the specified region of the output byte array. (Унаследовано от HashAlgorithm) |
|
Вычисляет хэш-значение для заданной области заданного массива байтов.Computes the hash value for the specified region of the specified byte array. (Унаследовано от HashAlgorithm) |
|
Пытается вычислить хэш-значение для заданного массива байтов.Attempts to compute the hash value for the specified byte array. (Унаследовано от HashAlgorithm) |
|
Пытается завершить вычисление HMAC после обработки последних данных алгоритмом HMAC.Attempts to finalize the HMAC computation after the last data is processed by the HMAC algorithm. |
|
Пытается завершить вычисление HMAC после обработки последних данных алгоритмом HMAC.Attempts to finalize the HMAC computation after the last data is processed by the HMAC algorithm. (Унаследовано от HMAC) |
5 способов создать винтажный эффект в Photoshop
Как расшифровать MD5 в режиме онлайн
Произвольный массив информации преобразуется в “дайджест” или “отпечаток” определенной длины. В дальнейшем при проверке файла полученный код сравнивается с исходным отпечатком и делается вывод о целостности данных. В общем понятии расшифровать хэш-код невозможно, так как он и был создан для того, чтобы его нельзя было взломать. Обычные методы раскодировки в данном случае не срабатывают, потому что информация представлена несколько по-иному. Поэтому, хотя это и сложновато, остается попробовать подобрать искомую информацию, в чем нам могут помочь специальные сервисы и программы.
Раскодировка MD5 онлайн
В специальное поле вводим хэш-код, который нам нужно расшифровать, значения капчи и нажимаем расшифровать (“Decrypt!”, если не произошел перевод сайта на русский язык). Внизу будут результаты: MD5-хэш и его раскодировка, либо информация о том, что расшифровка отсутствует в базе данных.
Также можно воспользоваться онлайн инструментом MSurf. Данный сервис позволяет как закодировать сведения при помощи MD5, так и расшифровать хэш-код.
Стоит отметить, что функция MD5 устаревает. Злоумышленники получают доступ к базам данных и с определенной долей вероятности – к зашифрованной информации. Поэтому вследствие относительной ненадежности разработчикам ПО рекомендуется пользоваться MD5 либо в комплексе с другими алгоритмами, либо постепенно заменить его на более современный SHA.
Как включить разделение экрана на Андроиде
При желании активировать функцию многозадачности на Андроид 7.0 важно учитывать, что она скрыта. Однако для ее разблокировки не требуются root-права
Для этого необходимо сделать следующие действия:
- Открыть меню и зайти в настройки. В списке кликнуть по пункту «О телефоне».
- По номеру сборки операционной системы нужно кликать по тех пор, пока не появится уведомление о том, что режим сборщика включен.
- В списке выбрать Параметры разработчика.
- Кликнуть по пункту Изменение размера в многоэкранном режиме, чтобы его активировать.
- Перезагрузить смартфон.
- После включения телефона открыть сразу два софта.
- В активированном режиме многоэкранность вам требуется кликнуть по необходимому значку, оттянуть вкладку в сторону и отпустить. Таким образом, будут одновременно работать две программы. При этом пользователь может изменять размеры вкладок путем их смещения.
Таким же способом включается функция многозадачности в других новых версиях Андроид, а также Android 9. Разница может быть только в том, что режим не скрыт и не требует разблокировки.
Проблемы надежности MD5
Казалось бы, такая характеристика MD5 должна обеспечивать 100% гарантии неуязвимости и сохранения данных. Но даже этого оказалось мало. В ходе проводимых исследований учеными был выявлен целый ряд прорех и уязвимостей в этом уже распространенном на тот момент алгоритме. Основной причиной слабой защищенности MD5 значится относительно легкое нахождение коллизий при шифровании.
Под коллизией понимают возможность получения одинакового результата вычислений хеш-функции при разных входных значениях.
Проще говоря, чем больше вероятность нахождения коллизий, тем надежность используемого алгоритма ниже. Вероятность нахождения коллизий при шифровании более надежными хеш-функциями практически сводится к 0.
То есть большая вероятность расшифровки паролей MD5 значится основной причиной отказа от использования этого алгоритма. Многие криптологи (специалисты по шифрованию данных) связывают низкую надежность MD5 с малой длиной получаемого хеш-кода.
Область применения алгоритма хеширования:
- Проверка целостности файлов, полученных через интернет – многие инсталляционные пакеты прог снабжены хеш-кодом. Во время активации приложения его значение сравнивается со значением, расположенным в базе данных разработчика;
- Поиск в файловой системе продублированных файлов – каждый из файлов снабжен своим хеш-кодом. Специальное приложение сканирует файловую систему компа, сравнивая между собой хеши всех элементов. При обнаружении совпадения утилита оповещает об этом пользователя или удаляет дубликат. Одной из подобных прог значится Duplifinder:
- Для хеширования паролей – в семействе операционных систем UNIX каждый юзер системы имеет свой замечательный пароль, для защиты которого используется хеширование на основе MD5. Некоторые системы на основе Линукс также пользуются этим методом шифрования паролей.
Алгоритм MD5
На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и неотрицательное. Кратность каким-либо числам необязательна. После поступления данных идёт процесс подготовки потока к вычислениям.
Ниже приведены 5 шагов алгоритма:
Шаг 1. Выравнивание потока
Сначала дописывают единичный бит в конец потока(байт 0x80), затем необходимое число нулевых бит.
Входные данные выравниваются так, чтобы их новый размер L’ был сравним с 448 по модулю 512 (L’ = 512 × N + 448).
Выравнивание происходит, даже если длина уже сравнима с 448.
Шаг 2. Добавление длины сообщения
В оставшиеся 64 бита дописывают 64-битное представление длины данных (количество бит в сообщении) до выравнивания. Сначала записывают младшие 4 байта. Если длина превосходит 264−1{\displaystyle 2^{64}-1}, то дописывают только младшие биты. После этого длина потока станет кратной 512. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит.
Шаг 3. Инициализация буфера
Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами (шестнадцатеричное представление, сначала младший байт):
А = 01 23 45 67; В = 89 AB CD EF; С = FE DC BA 98; D = 76 54 32 10.
В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором.
Определим ещё функции и константы, которые нам понадобятся для вычислений.
Потребуются 4 функции для четырёх раундов. Введём функции от трёх параметров — слов, результатом также будет слово.
- 1 раунд FunF(X,Y,Z)=(X∧Y)∨(¬X∧Z){\displaystyle Fun F(X,Y,Z) = (X\wedge{Y}) \vee (\neg{X} \wedge{Z})}.
- 2 раунд FunG(X,Y,Z)=(X∧Z)∨(¬Z∧Y){\displaystyle Fun G(X,Y,Z) = (X\wedge{Z}) \vee (\neg{Z} \wedge{Y})}.
- 3 раунд FunH(X,Y,Z)=X⊕Y⊕Z{\displaystyle Fun H(X,Y,Z) = X \oplus Y \oplus Z}.
- 4 раунд FunI(X,Y,Z)=Y⊕(¬Z∨X){\displaystyle Fun I(X,Y,Z) = Y \oplus (\neg{Z} \vee X)}.
- Определим таблицу констант T — 64-элементная таблица данных, построенная следующим образом: Ti=int(4294967296∗|sin(i)|){\displaystyle T=int(4294967296*|sin(i)|)}, где 4294967296=232{\displaystyle 4294967296 = 2^{32}}. Иными словами, в таблице представлены по 32 бита после десятичной запятой от значений функции sin.
- Выровненные данные разбиваются на блоки (слова) по 32 бита, и каждый блок проходит 4 раунда из 16 операторов. Все операторы однотипны и имеют вид: , определяемый как a=b+((a+Fun(b,c,d)+Xk+Ti)<<<s){\displaystyle a = b + ((a + Fun(b, c, d) + X + T) <<< s)}, где X — блок данных. X = M , где k — номер 32-битного слова из n-го 512-битного блока сообщения, и s — циклический сдвиг влево на s бит полученого 32-битного аргумента.
Шаг 4. Вычисление в цикле
Заносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый).
- AA = A
- BB = B
- CC = C
- DD = D
Раунд 1
/* a = b + ((a + F(b,c,d) + X + T) <<< s). */
Раунд 2
/* a = b + ((a + G(b,c,d) + X + T) <<< s). */
Раунд 3
/* a = b + ((a + H(b,c,d) + X + T) <<< s). */
Раунд 4
/* a = b + ((a + I(b,c,d) + X + T) <<< s). */
Суммируем с результатом предыдущего цикла:
A = AA + A B = BB + B C = CC + C D = DD + D
После окончания цикла необходимо проверить, есть ли ещё блоки для вычислений. Если да, то изменяем номер элемента массива (n++) и переходим в начало цикла.
Шаг 5. Результат вычислений
Результат вычислений находится в буфере ABCD, это и есть хеш. Если выводить побайтово начиная с младшего байта A и закончив старшим байтом D, то мы получим MD5 хеш.
Сравнение MD5 и MD4
Алгоритм MD5 происходит от MD4. В новый алгоритм добавили ещё один раунд, теперь их стало 4 вместо 3 в MD4. Добавили новую константу для того, чтобы свести к минимуму влияние входного сообщения, в каждом раунде на каждом шаге и каждый раз константа разная, она суммируется с результатом F и блоком данных. Изменилась функция G = XZ v (Y not(Z)) вместо (XY v XZ v YZ). Результат каждого шага складывается с результатом предыдущего шага, из-за этого происходит более быстрое изменение результата. Изменился порядок работы с входными словами в раундах 2 и 3.
Различия в скорости работы представлены в таблице:
MD5 | MD4 | |||
---|---|---|---|---|
RFC | 2,614 сек | 37 359 Кб/с | 2,574 сек | 37 940 Кб/с |
OpenSSL | 1,152 сек | 84 771 Кб/с | 0,891 сек | 109 603 Кб/с |
Безопасное использование MD5
Этот способ шифрования – является самым распространенным способом защитить информацию в сфере прикладных исследований, а также в области разработки веб-приложений. Хеш необходимо обезопасить от всевозможных хакерских атак. Одним из действенных способов защиты является «соль». Необходимо прибавить к паролю лишние случайные символы.
Специализированные разделы и функции существуют во многих программных и серверных языках. Создание хеша на языке PHP происходит следующим образом: один из параметров MD5 хеш становится аналогичен значению «соли», а функция Crypt автоматически генерирует это значение. Способ защиты Unix предполагает кодирование подряд почти тысячу раз. Способ «HMAC» предполагает применение специальных ключей.
StartManager 1.4 — Развитие альтернативного стартера Промо
Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.
1 стартмани
Запуск обновления на Windows
Примеры использования
Ранее считалось, что MD5 позволяет получать относительно надёжный идентификатор для блока данных. На данный момент данная хеш-функция не рекомендуется к использованию, так как существуют способы нахождения коллизий с приемлемой вычислительной сложностью.
Свойство уникальности хеша широко применяется в разных областях. Стоит отметить, что приведенные примеры относятся и к другим .
С помощью MD5 проверяли целостность и подлинность скачанных файлов — так, некоторые программы поставляются вместе со значением контрольной суммы. Например, пакеты для инсталляции свободного ПО.
MD5 использовался для хеширования паролей. В системе UNIX каждый пользователь имеет свой пароль и его знает только пользователь. Для защиты паролей используется хеширование. Предполагалось, что получить настоящий пароль можно только полным перебором. При появлении UNIX единственным способом хеширования был DES (Data Encryption Standard), но им могли пользоваться только жители США, потому что исходные коды DES нельзя было вывозить из страны. Во FreeBSD решили эту проблему. Пользователи США могли использовать библиотеку DES, а остальные пользователи имеют метод, разрешённый для экспорта. Поэтому в FreeBSD стали использовать MD5 по умолчанию.. Некоторые Linux-системы также используют MD5 для хранения паролей.
Многие системы используют базы данных для аутентификации пользователей и существует несколько способов хранения паролей:
- Пароли хранятся как есть. При взломе такой базы все пароли станут известны.
- Хранятся только хеши паролей. Найти пароли можно используя заранее подготовленные таблицы хешей. Такие таблицы составляются из хешей простых или популярных паролей.
- К каждому паролю добавляется несколько случайных символов (их называют «соль») и результат хешируется. Полученный хеш вместе с «солью» сохраняются в открытом виде. Найти пароль с помощью таблиц таким методом не получится.
Существует несколько надстроек над MD5.
- MD5 (HMAC) — Keyed-Hashing for Message Authentication (хеширование с ключом для аутентификации сообщения) — алгоритм позволяет хешировать входное сообщение L с некоторым ключом K, такое хеширование позволяет аутентифицировать подпись.
- MD5 (Base64) — здесь полученный MD5-хеш кодируется алгоритмом Base64.
- MD5 (Unix) — алгоритм вызывает тысячу раз стандартный MD5, для усложнения процесса. Также известен как MD5crypt.
Для чего применяется MD5
Технология MD5 используется как один из криптографических методов, при помощи которого не только проверяются на целостность различные данные, но и:
- хранятся онлайн-ключи и пароли;
- создаются веб-идентификаторы и ЭЦП;
- выполняется поиск дублирующихся файлов и многое другое.
MD5 широко применяется при авторизации на различных сайтах. Вводимая пользователями информация считывается в виде отпечатков и хранится в базе данных сайта. Поэтому, даже если злоумышленник и похитит эту базу, он не сможет воспользоваться ею непосредственным образом. Все пароли зашифрованы и представлены дайджестами. Далее я расскажу о расшифровке файла MD5 онлайн сервисами.
Именно для того, чтобы избежать попадания в руки мошенников, многие данные в сети и передаются в зашифрованном виде. Информации присваивается MD5 = (случайное сочетание символов), например MD5 = 214d9a2575bb130ac5f19a8531e6e5f1. Этот набор символов (после “=”) называется “хэш MD5”, или контрольная сумма исчисляемый результат. Служит данный хэш для проверки передаваемых данных на целостность.
Как это происходит?
- При передаче массиву информации, целостность которого нужно проконтролировать, присваивается исходный хэш, исчисляемый при помощи алгоритма MD5;
- результат фиксируется;
- при регулярной или внеплановой проверке происходит сравнение полученной контрольной суммы с исходной;
- результаты совпадают – повода для беспокойства нет, если же они различаются, то это говорит о постороннем вмешательстве и изменении данных.
Свойства хеша
Хэш-функция должна уметь преобразовывать информацию различной длины в код, состоящий из 32 шестнадцатеричных символов. Кроме этого, имеется несколько моментов, позволяющих обезопасить пользователя от постороннего вмешательства и изменения зашифрованной информации:
- если используются различные входные данные, то и результаты исчисления хэша должны заметно отличаться;
- алгоритм функции должен быть открыт для того, чтобы можно было исследовать ее на криптостойкость;
- шифрование хэша производится в одностороннем порядке, то есть никаким способом нельзя по результату вычислить исходную информацию.
Хэш-функция должна использовать минимальные вычислительные ресурсы.
Самостоятельное использование MD5
Здесь существует один интересный момент – при помощи данной функции каждый пользователь может самостоятельно проверить на целостность файл, скачанный из Интернета. Для этого нужно воспользоваться специальными сервисами, к примеру, HashTab implbits.com/products/hashtab. Утилита скачивается и встраивается в свойства файла в виде отдельной вкладки. С помощью HashTab можно воспользоваться несколькими алгоритмами хэширования данных, к тому же сервис находится в свободном доступе для пользователей, применяющих ее в личных целях.
Статьи по темеRelated topics
Популярные хеш-функции Python
Некоторые часто используемые хеш-функции:
- MD5: Алгоритм производит хеш со значением в 128 битов. Широко используется для проверки целостности данных. Не подходит для использования в иных областях по причине уязвимости в безопасности MD5.
- SHA: Группа алгоритмов, что были разработаны NSA Соединенных Штатов. Они являются частью Федерального стандарта обработки информации США. Эти алгоритмы широко используются в нескольких криптографических приложениях. Длина сообщения варьируется от 160 до 512 бит.
Модуль , включенный в стандартную библиотеку Python, представляет собой модуль, содержащий интерфейс для самых популярных алгоритмов хеширования. реализует некоторые алгоритмы, однако, если у вас установлен OpenSSL, также может использовать эти алгоритмы.
Данный код предназначен для работы в Python 3.5 и выше. При желании запустить эти примеры в Python 2.x, просто удалите вызовы и .
Сначала импортируется модуль :
Python
import hashlib
1 | importhashlib |
Теперь для списка доступных алгоритмов используются и .
Python
print(hashlib.algorithms_available)
print(hashlib.algorithms_guaranteed)
1 |
print(hashlib.algorithms_available) print(hashlib.algorithms_guaranteed) |
Метод создает список всех алгоритмов, доступных в системе, включая те, что доступны через OpenSSl. В данном случае в списке можно заметить дубликаты названий. перечисляет только алгоритмы модуля. Всегда присутствуют , , , , , .
Что такое хеши и как они используются
Хеш-сумма (хеш, хеш-код) — результат обработки неких данных хеш-функцией (хеширования).
Хеширование, реже хэширование (англ. hashing) — преобразование массива входных данных произвольной длины в (выходную) битовую строку фиксированной длины, выполняемое определённым алгоритмом. Функция, реализующая алгоритм и выполняющая преобразование, называется «хеш-функцией» или «функцией свёртки». Исходные данные называются входным массивом, «ключом» или «сообщением». Результат преобразования (выходные данные) называется «хешем», «хеш-кодом», «хеш-суммой», «сводкой сообщения».
Это свойство хеш-функций позволяет применять их в следующих случаях:
- при построении ассоциативных массивов;
- при поиске дубликатов в сериях наборов данных;
- при построении уникальных идентификаторов для наборов данных;
- при вычислении контрольных сумм от данных (сигнала) для последующего обнаружения в них ошибок (возникших случайно или внесённых намеренно), возникающих при хранении и/или передаче данных;
- при сохранении паролей в системах защиты в виде хеш-кода (для восстановления пароля по хеш-коду требуется функция, являющаяся обратной по отношению к использованной хеш-функции);
- при выработке электронной подписи (на практике часто подписывается не само сообщение, а его «хеш-образ»);
- и др.
Одним из применений хешов является хранение паролей. Идея в следующем: когда вы придумываете пароль (для веб-сайта или операционной системы) сохраняется не сам пароль, а его хеш (результат обработки пароля хеш-функцией). Этим достигается то, что если система хранения паролей будет скомпрометирована (будет взломан веб-сайт и злоумышленник получит доступ к базе данных паролей), то он не сможет узнать пароли пользователей, поскольку они сохранены в виде хешей. Т.е. даже взломав базу данных паролей он не сможет зайти на сайт под учётными данными пользователей. Когда нужно проверить пароль пользователя, то для введённого значения также рассчитывается хеш и система сравнивает два хеша, а не сами пароли.
По этой причине пентестер может столкнуться с необходимостью работы с хешами. Одной из типичных задач является взлом хеша для получения пароля (ещё говорят «пароля в виде простого текста» — поскольку пароль в виде хеша у нас и так уже есть). Фактически, взлом заключается в подборе такой строки (пароля), которая будет при хешировании давать одинаковое значение со взламываемым хешем.
Для взлома хешей используется, в частности, Hashcat. Независимо от выбранного инструмента, необходимо знать, хеш какого типа перед нами.
История и уязвимости MD5
MD5 был изобретен Рональдом Ривестом, но это только один из трех его алгоритмов. Первой хэш-функцией, которую он разработал, была MD2 в 1989 году, которая была построена для 8-битных компьютеров. Хотя MD2 все еще используется, он не предназначен для приложений, которым требуется высокий уровень безопасности, поскольку было показано, что он уязвим для различных атак.
Затем MD2 был заменен на MD4 в 1990 году. MD4 был создан для 32-разрядных машин и был намного быстрее, чем MD2, но, как было установлено, имел слабые стороны, и в настоящее время он считается устаревшим в Internet Engineering Task Force. MD5 был выпущен в 1992 году и был также построен для 32-битных машин. MD5 не так быстр, как MD4, но считается более безопасным, чем предыдущие реализации MDx.
Хотя MD5 более безопасен, чем MD2 и MD4, другие криптографические хеш-функции, такие как SHA-1, были предложены в качестве альтернативы, так как было показано, что MD5 также имеет недостатки безопасности .
У Института разработки программного обеспечения Университета Карнеги-Меллона есть что сказать о MD5: