В данной статье, уважаемый читатель, мы с Вами поговорим о такой интересной штуке, как MD5. Что это такое, спросите Вы? Все довольно просто (а с другой стороны – сложно). Если Вам скажут, что MD5 – это один из алгоритмов шифрования, то данное утверждение не соответствует истине. Не совсем понятно? Ну, тогда попробую растолковать поподробнее, посмотрим, что из этого получится.

Данный вид алгоритма был разработан еще в 1991 году Рональдом Л.Ривестом. Преимущество алгоритма MD5 заключается в том, что зашифрованные данные нельзя восстановить. И тут сразу возникает вопрос: что же это за алгоритм шифрования такой, что данные им зашифровать можно, а расшифровать нельзя?

Теперь дадим определение. MD5 – это хэш-функция. Рассмотрим подробее, что же это за зверь и зачем он может пригодиться.

Для примера возьмем некоторую функцию, которая по известному параметру (допустим, этот параметр – латинский алфавит в его строчном изложении) возвращает некоторое числовое значение (допустим, от 1 до 100). В данном конкретном случае нам абсолютно не важно, какие действия выполняет данная функция, важен результат: каждой строчной букве латинского алфавита ставится в соответствие число в промежутке от 1 до 100. Это и есть простейший пример хэш-функции. По известному параметру данной функции можно однозначно определить возвращаемое функцией значение.

Однако по известному результату восстановить исходное значение не получится.

Хэш-функцию MD5 используют для хранения паролей. Как Вам, уважаемый читатель, наверное известно, хранение паролей в открытом (нешифрованном) виде является не только нежелательным, но и вообще недопустимым. Вот для шифрования значений паролей с невозможностью их изменения и используют функцию MD5.

После ввода пользователем логина и пароля вычисляется хэш-функция MD5. Полученный результат сравнивается с контрольной суммой пароля, которая хранится в базе данных на сервере. Если введенные значения совпадают, то пользователь получает доступ к ресурсу, в противном случае его просят повторить ввод.

Еще функция MD5 применяется в качестве контрольной суммы при передаче по линиям связи какой-либо информации в виде файлов. Предположим, что файл передать нужно, а гарантии, что файл дойдет до получателя в целости и сохранности, нет никакой. Нужно подсчитать контрольную сумму с помощью MD5 до отправки файла и выслать полученное значение вместе с ним. После получения файла вновь требуется запустить вычисление хэш-суммы, и если полученные значения одинаковы, то это означает, что файл был доставлен без повреждений. В противном случае файл поврежден.

В последнее время MD5 стали применять в различных онлайн-играх и интернет-казино. Используется эта функция в процессе в казино игры следующим образом: перед тем, как сделать ставку, игроку передается хэш-сумма с результатом текущей игры. После того, как ставки сделаны и игра окончена, игрок получает ее результат. Если взять от результата хэш-функцию и сравнить ее с переданным ранее значением, то данные должны полностью совпадать. Это является залогом того, что онлайн-казино играет честно. Но не стоит рассчитывать на то, что игрок выиграет, ведь казино для того и существуют, чтобы брать у клиентов денежки, по возможности ничего не давая взамен. Но шанс на выигрыш, пусть малюсенький, но все же существует.

В онлайн-играх функция MD5 используется в схожих целях – для контроля честности игроков и гарантии того, что они не вносили в игру каких-либо измеений, обеспечивающих им различные преимущества.

Как же работает MD5? Как известно, компьютер оперирует двоичной системой счисления, то есть последовательностями данных, состоящих из нолей и единиц.

Пусть некоторое значение а – длина последовательности в двоичной системе счисления (64 бита). К полученной последовательности добавляется единица.и потом приписываются нули, пока длина последовательности не станет равна 448. Затем к вновь полученной последовательности добавляются младшие 32 бита числа а, а затем и старшие. Длина полученной последовательности становится кратной 512. Назовем ее В. Для вычисления результата используются четыре двойных слова (32 бита). Данные слова ставятся в соответствие к их значению в шестнадцатеричной системе счисления, причем первым следует младший байт.

Затем с помощью простых преобразований (на них подробно мы останавливаться не будем), получается искомая функция.

Длина полученной функции MD5 в двоичной системе счисления равна 128 бит, а в шестнадцатеричной она состоит из 32 символов.

Казалось бы, алгоритм шифрования в функции MD5 очень мощный, однако же существуют программы, позволяющие его взломать. Они перебирают возможные значения, и сравнивая полученный результат с имеющейся контрольной суммой, позволяют методом перебора вычислить исходный пароль. Но у данных программ есть ограничение: чем длиннее и сложнее пароль, тем большее время может уйти на его расшифровку, зачастую целые годы.