Хэширование паролей функцией md5

Среди множества функций PHP есть функция md5. В ее основе алгоритм MD5 RSA Data Security, Inc. Она возвращает так называемый хэш строки, который представляет собой 32-значное шестнадцатеричное число. Для каждой строки он уникален, вероятность совпадения его у разных строк ничтожно мала.

Хэширование — это вовсе не шифрование. Шифрование предполагает некий ключ, с помощью которого шифр можно перевести в читаемый текст. У хэширования такого ключа нет. Можно сказать, что это шифрование «в одну сторону», без возможности дешифровки.

Функцию md5 очень удобно использовать для хранения паролей в базе сайта. Я неоднократно сталкивался с ситуацией, когда в базе пароли лежат в явном виде. Понятно, что в случае взлома такой базы хакер получит доступ к целой коллекции паролей. И ничего хорошего в этом нет.

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

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

Поэтому на приличных сайтах пароли хранят в хэшированном виде. Когда пользователь вводит свой пароль, его тоже пропускают через md5 и сравнивают с лежащим в базе хэшем — если строки совпали, значит пользователь ввел именно тот пароль, хэш которого лежит в базе.

На самом деле, хэширование здорово защищает пароль, но абсолютной защиты все-таки не дает. Расшифровать его нельзя, но можно подобрать. Методом банального перебора. Программ для этого дело можно найти в Интернете довольно много, это не проблема. Были бы время и мощный компьютер. Вооружившись однажды такой программкой, я обнаружил что хэш трех-четырехзначных строк подбирается буквально за пару минут. А вот подбора моего пробного «пароля» из 6 знаков я так и не дождался — терпения не хватило. Так что хранящийся в базе хэш 8-10 значного пароля дает не абсолютную, но очень высокую степень защиты.

В общем, когда вы программируете сайт, не поленитесь, встройте в него хэширование паролей. И посоветуйте посетителям при регистрации придумывать пароль как минимум из 6-8 знаков. А когда бродите по незнакомым сайтам — выбирайте для каждого свой пароль — ведь сайт может оказаться «дырявым». Ну или возьмите какой-нибудь общий пароль для всех одноразовых регистраций, а уж если будете пользоваться этим форумом и сервисом часто — смените его на что-то более безопасное.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: