Суббота, 21.12.2024
Меню сайта
Вход на сайт
Поиск
Статистика
Яндекс.Метрика
Реклама
HTML Perl PHP Прочее
Необратимое шифрование MD5 в PHP
Зачем это нужно?При необратимом шифровании информация зашифровывается таким образом, что не подлежит обратной расшифровке. На первый взгляд это может показаться странным, в действительности же такой метод шифрования ис-пользуется очень часто. Функции, с помощью которых реализуется однонаправленное шифрование, называются функциями хеширования. При использовании таких функций создается уникальный хеш-код строки. Наиболее часто в качестве алгоритма хеширования применяется алгоритм MD5, реализовать который можно с помощью одноименной функции:

Code
string md5(string str[, bool raw_output])

В качестве обязательного аргумента эта функция принимает строку str, которую необходимо зашифровать, и возвращает ее уникальный 128-битовый хеш-код. Если необязательный аргумент raw_output имеет значение true, то возвращается бинарная строка из 16 символов. Вероятность того, что две строки дадут одинаковый хешкод, стремится к нулю.
Аналогичная функция md5_file () часто используется для создания уникального хеш-кода объемных файлов, которые передаются по сети. Загрузив файлы, всегда можно проверить целостность хеш-кода, вычислив его по алгоритму MD5 и сравнив полученный результат с хеш-кодом, предоставляемым распространителем. Это позволяет отследить повреждения файла, вызванные передачей через сеть, а так же предотвращает фальсификацию файла. Такой способ часто применяют при распространении объемных дистрибутивов.
При помощи этой функции можно зашифровывать различные данные, к примеру, пароли пользователей. Это предоставляет возможность организовать следующий алгоритм авторизации пользователей. При первой регистрации пользователя сохраняется хеш-код его пароля (к примеру, в базе данных). При дальнейших посещениях странички хеш-код вводимого пользователем пароля сравнивается с сохраненным ранее хеш-кодом. Если эти отпечатки совпадают, авторизация считается успешной.
Такая схема авторизации не позволяет получить непосредственный доступ к паролям, даже если происходит хищение базы данных. В этом случае злоумышленник вынужден тратить значительное машинное время на перебор паролей по словарю, поэтому пароли вида W5t7,9yuP практически не поддаются расшифровке, в то же время необратимое шифрование не сможет защитить от перебора при пароле вида 12345.
PHP 9522 04.01.2010
Материалы по теме: