2011-01-09 5 views
0

Mögliche Duplizieren:
PHP:How to send the original password to the user when he clicks forgot password which is encrypted by using md5?wie MD5-Hash entschlüsseln

ich ein Login erstellen haben und das System in PHP registrieren und ich möchte ein Passwort vergessen Link machen Passwort aus der abrufen Datenbank. Wie mache Ich das?

Hinweis: das Passwort in der Datenbank in verschlüsselter mit MD5-Hash

+4

http://qdb.us/303622 –

+1

Ziemlich gute Komprimierung in der Tat :-) –

+0

@Martin - Ich dachte, es war eine gute Frage. Der Typ hat heute offensichtlich etwas Wichtiges über die MD5-Verschlüsselung gelernt. – jmort253

Antwort

13

MD5 ist ein kryptografischer Hash, kein Verschlüsselungsschema. Es kann nicht direkt umgekehrt werden. Es kann nur Brute-forced werden, indem man mögliche Passwörter ausprobiert, bis eine Übereinstimmung gefunden wird. Dies wird nicht empfohlen.

Sie können das Passwort nicht vernünftig wiederherstellen. Ihr vergessenes Passwort sollte stattdessen das Passwort zurücksetzen.

Dies ist Absicht und gutes Design. MD5 wird verwendet, um die Passwörter zu hacken, damit die Hacker nur Zugriff auf die Hashes der Passwörter und nicht auf die ursprünglichen Passwörter haben, wenn die Passwortdatenbank gehackt werden soll, was es für sie schwierig macht, die Passwörter ihrer Benutzer zu entdecken.

An diesem Punkt sind MD5 Cracker jedoch schnell genug geworden, dass es nicht für die Verwendung von Passwörtern empfohlen wird. In Zukunft sollte scrypt oder bcrypt als Passwort-Hash-Funktion verwendet werden.

4

md5 ist eine Möglichkeit. Sie können MD5-verschlüsselte Zeichenfolgen nicht umkehren.

In der Regel, was Entwickler tun, wenn Sie ein vergessenes Passwort Link geben, ist das Passwort des Benutzers auf etwas zufällige zurückzusetzen, geben Sie diese in einer E-Mail, und zwingen sie dann ihr Passwort beim nächsten Login zurückzusetzen.

Eine andere Lösung wäre, sie mit einem zufälligen Schlüssel und einem "Passwort vergessen Link" zu versehen, mit dem sie ihr Passwort zurücksetzen können.

Nur für den Fall, dass Sie darüber nachdenken, möchte ich erwähnen, dass es keine gute Idee ist, Passwörter in der Datenbank im Klartext zu speichern. Die Tatsache, dass Sie das Passwort des Benutzers nicht abrufen können, bedeutet auch, dass ein Hacker das nicht kann.

+0

also wie kann ich Passwort vergessen Anwendung erstellen? – dramasea

+0

Ich möchte auch darauf hinweisen, dass Hacker, wenn eine Datenbank gehackt wird, auch den Schlüssel greifen. Als nächstes wird ein Programm geschrieben, um zufällige Passwörter zu generieren, die gegen die Hashes verwendet werden, bis eines übereinstimmt. Je komplizierter Ihr Passwort ist, desto länger dauert es, bis Ihr Konto kompromittiert wird. – Maarek

3

Wenn Benutzer ihre Kennwörter vergessen, sollten Sie ihnen ihre Kennwörter nicht senden. Stattdessen sollten sie ihre Kennwörter nach der Überprüfung zurücksetzen müssen (z. B. indem sie eine E-Mail oder ein anderes Mittel erhalten), dass sie tatsächlich der richtige Benutzer sind.

5

Der ganze Punkt eines Hash-Passwortes ist, dass es unmöglich ist, das ursprüngliche Passwort aus dem Hash wiederherzustellen. Wenn jemand die Passwort-Datenbank hackt und alle Hashes stiehlt, können sie nicht alle Passwörter des Benutzers wiederherstellen. In der Tat ist es mathematisch unmöglich, dies zu tun. Eine Hash-Funktion ordnet alle unendlich vielen möglichen Strings einer Menge von Strings fester Länge zu, so dass es (idealerweise!) Unendlich viele Strings gibt, die auf einen bestimmten Hash-Wert hashen.

Wenn Sie ein "Passwort vergessen?" Option ist es wahrscheinlich am besten, das Passwort des Benutzers einfach auf etwas Zufälliges zurückzusetzen und dann eine E-Mail mit dem neuen Junk-Passwort zu senden.

4

Während die anderen Plakate richtig sind, denke ich, dass eine spezifische Antwort gesucht wird, so hier geht.

Passwort vergessen Funktion kann mithilfe von zwei Spalten im Zusammenhang mit der Benutzer-ID implementiert werden. Eine Spalte ist eine zufällige Zeichenfolge, die beliebig lang sein kann, und eine andere Datumsangabe. Wenn der Benutzer angibt, dass er sein Kennwort vergessen hat, generieren Sie die zufällige Zeichenfolge und aktualisieren diesen Datensatz mit der Zeichenfolge und der aktuellen Datumszeit. Sie senden dann eine E-Mail an ihre registrierte E-Mail-ID mit einer URL, die die zufällige Zeichenfolge enthält. Wenn diese URL geöffnet wird, prüfen Sie, ob die zufällige Zeichenfolge in Ihren Tabellen vorhanden ist und ob sie nicht abgelaufen ist. Sie überprüfen die aktuelle Datums- und Datumszeit, zu der die Zeichenfolge generiert wurde, und Sie haben Ihre eigene Richtlinie, um festzulegen, welche Zeit Sie am längsten warten. normalerweise sind 3 Tage genug. Wenn die Verbindung abgelaufen ist, muss das vergessene Passwort erneut gestartet werden. Wenn der Link nicht abgelaufen ist, notieren Sie die Benutzer-ID, für die der String generiert wurde, und Sie werden den Benutzer bitten, seinen Benutzernamen und sein neues Passwort zweimal einzugeben. Der Benutzername muss mit der Benutzer-ID übereinstimmen, für die die Zeichenfolge generiert wurde, und die beiden Kennwörter müssen übereinstimmen. Sie werden dann das Benutzerpasswort mit dem md5-Hash des neuen Passworts aktualisieren.

Der Grund, warum Sie kein neues Passwort erstellen möchten, ist, dass, wenn der Benutzer das Passwort zurückruft, sie sich trotzdem einloggen können, auch wenn ihr Passwort vergessen wurde.