MD5 или Message Digest 5 это 128-битный алгоритм хеширования который разработан в начале 90-х годов профессором Рональдом Ривестом. В основном, представляется как последовательность из 32 шестнадцатеричных цифр, к примеру: 1bc29b36f623ba82aaf6724fd3b16718. Чтобы понять что такое MD5 сначала надо освоиться с понятием хеширование.
Что такое хеширование
Хеширование это процесс преобразования любого массива данных в выходную строку фиксированной длины. Это преобразование проводится с помощью, так называемых, хеш-функций. Такая функция на входе получает массив данных, а на выходе возвращает так называемый хеш (хеш-суму) – уникальную строку фиксированной длины.
Алгоритм работы хеш-функции построен таким образом, что для любого массива данных функция выдает уникальную строку. Ввиду этой особенности полученная строка может использоваться как цифровой отпечаток данных. Такой отпечаток можно юзать для проверки целостности данных.
К примеру, когда разработчик программного обеспечения публикует в сети свой программный продукт, вместечке с ним он может опубликовать его хеш. Это позволит юзерам проверить целостность программы перед ее установкой. Ели программа была заражена вирусами или загрузилась с ошибками, ее хеш не будет соответствовать хешу, который был опубликован разработчиком программы.
История развития MD5
Алгоритм MD5 был разработан профессором Рональдом Л. Ривестом из Массачусетского технологического института в 1991 году. Данный алгоритм стал заменой предыдущей версии алгоритма MD4. С этого времени алгоритм обрел большую популярность и стал использоваться повсеместно.
Начиная с 1993 года, регулярно появляются исследования, которые обнаруживают все новые уязвимости в алгоритме MD5. На данный момент алгоритм MD5 считается уязвимым и постепенно заменяется алгоритмом SHA.
Как получить хеш MD5
Если вам следует получить MD5 хеш от обычной строки текста, то удобней всего юзать online сервисы. Одним из таких сервисов значится www.md5.cz.
Чтобы получить MD5 хеш при помощи этого сервиса достаточно ввести строку в поле и нажать на кнопку «Hash». Поле этого появится хеш введенной строки.
Если же вам следует получить MD5 хеш файла, то придётся юзать специальные программы, к примеру, MD5summer (http://www.md5summer.org/download.html).
Работать с этой программой очень просто. Чтобы получить MD5 хеш файла достаточно запустить программу и выбрать нужный файл.
Проблемы надежности MD5
Казалось бы, такая характеристика MD5 должна обеспечивать 100% гарантии неуязвимости и сохранения данных. Но даже этого оказалось мало. В ходе проводимых исследований учеными был выявлен целый ряд прорех и уязвимостей в этом уже распространенном на тот момент алгоритме. Основной причиной слабой защищенности MD5 значится относительно легкое нахождение коллизий при шифровании.
Под коллизией понимают возможность получения одинакового результата вычислений хеш-функции при разных входных значениях.
Проще говоря, чем больше вероятность нахождения коллизий, тем надежность используемого алгоритма ниже. Вероятность нахождения коллизий при шифровании более надежными хеш-функциями практически сводится к 0.
То есть большая вероятность расшифровки паролей MD5 значится основной причиной отказа от использования этого алгоритма. Многие криптологи (специалисты по шифрованию данных) связывают низкую надежность MD5 с малой длиной получаемого хеш-кода.
Область применения алгоритма хеширования:
- Проверка целостности файлов, полученных через интернет – многие инсталляционные пакеты прог снабжены хеш-кодом. Во время активации приложения его значение сравнивается со значением, расположенным в базе данных разработчика;
- Поиск в файловой системе продублированных файлов – каждый из файлов снабжен своим хеш-кодом. Специальное приложение сканирует файловую систему компа, сравнивая между собой хеши всех элементов. При обнаружении совпадения утилита оповещает об этом пользователя или удаляет дубликат. Одной из подобных прог значится Duplifinder:
- Для хеширования паролей – в семействе операционных систем UNIX каждый юзер системы имеет свой замечательный пароль, для защиты которого используется хеширование на основе MD5. Некоторые системы на основе Линукс также пользуются этим методом шифрования паролей.
Основы безопасности при использовании MD5
Данный стандарт кодирования значится одним из самых распространенных методов защиты данных не лишь в прикладном, но и в веб-программировании. Так что не будет лишним обезопасить свой md5 hash от намеренного взлома.
Основным способом, гарантирующим безопасность хеша вашего пароля, значится использование «соли». Он основан на добавлении к паролю нескольких случайных символов и последующем хешировании результата.
Во многих языках программирования для этого используются специальные классы и функции. Не являются исключением из правил и серверные языки программирования.
Создать хеш-код MD5 в php можно при помощи нескольких функций:
- md5() – в качестве 1-го из параметров принимает значение «соли»;
- crypt() – в отличие от предыдущей эта функция полностью автоматизирует весь процесс, в том числе и генерирование значения соли.
Ее синтаксис:
string crypt ( string $str [, string $salt ] )
Пример использования:
$hash = crypt(‘password’)
При использовании функции md5() в PHP для задания значения соли используют методы генерации случайных чисел. К примеру, rand():
<?php
$pass = ‘admin’;
function salt() {
$s = »;
$length = rand(7,12); //длина соли
for($i=0; $i<$length; $i++) {
$s .= chr(rand(33,126)); //случайный символ из таблицы ASCII
}
return $s;
}
echo md5(md5($pass).salt());?>
Помимо применения «соли» было разработано еще несколько методов защиты хеша MD5:
- MD5 (Unix) – заданное первоначальное значение проходит цикл хеширования около 1000 раз;
- MD5 (HMAC) – данный метод основан на использовании в хешировании специального ключа;
- MD5 (Base64) – полученный хеш еще раз кодируются при помощи алгоритма Base64.
В материале приведены лишь начальные сведения об обеспечении безопасности хеша, полученного при помощи этого алгоритма. Самым простым и эффективным из них значится использование уникального значения «соли», которая даёт возможность существенно «насолить» злоумышленнику и «подсластить» жизнь владельцу взламываемого пароля.
Видео о том, что такое хэш функция?
круто