2012-04-06 2 views
3

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

Любой ответ или соответствующая ссылка будут очень оценены. Спасибо ..

+9

хэш, а не шифрование, и вы не можете это все использовать хэш. стандартная практика заключалась бы в том, чтобы отправить их на URL-адрес, чтобы установить новый пароль. –

+0

Если вы хотите, чтобы пароли были восстановлены, почему вы их используете в первую очередь? (примечание: я не предлагаю не хешировать пароли.) – JJJ

+0

@ Dagon, я бы проголосовал за это, если вы дадите ответ с этим, и еще несколько объяснений о том, почему это сделать –

ответ

10

Это не может быть сделано

MD5 является hashing function и не является функцией шифрования. Это односторонний процесс и не обратимый.

На самом деле, есть много таких паролей (входы), которые приводят к же значению MD5 при хэшируются, но это «трудно», чтобы найти только один и [вообще] невозможно найти оригинал один. Это то, что «взламывает» пароль - он находит один такой вход, который при хэшировании приводит к конкретному результату. (И я больше не буду помогать по этой дороге.)

0

Rainbow tables может быть для вас интересным.
Невозможно восстановить оригинальный пароль из хэша, но с использованием радужных таблиц может быть найдена какая-то строка, которая будет генерировать такой же хеш, сколько вам нужно.

+0

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

+0

http://gmail.com –

2

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

6

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

Если вам повезет, вы можете найти свой хеш в rainbowtables: http://www.md5rainbow.com/ , но он может принести вам не вашу исходную строку, хотя в вашем логине не имеет значения, вы, вероятно, сравниваете хешированные строки.

Что вы, вероятно, захотите сделать, это «сбросить пароль» вместо отправки исходного пароля.

2

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

Смежные вопросы