Problem mit md5
Andreas Dölling
- php
Hallo,
ich habe eine kleine Website mit Benutzer-Login.
Die Paßwörter stehen als md5-verschlüsselte Zeichenketten in einer MySQL-Datenbank (in einem VARCHAR-Feld der Länge 100, was also mehr als ausreichend ist).
Wenn ich Benutzer anlege, so trage ich die md5-verschlüsselte Zeichenkette (lasse ich mir von einem Script ausgeben) per phpMyAdmin in die Datenbanktabelle ein, und alles klappt wunderbar. Die Benutzer können sich einloggen.
Ich biete aber auch die Funktion "Paßwort ändern" an, und hier tritt das Problem auf. Das neue Paßwort wird durch ein Script md5-verschlüsselt und per UPDATE in die Tabelle geschrieben.
Aaaaber: der Benutzer kann sich mit diesem neuen Paßwort jetzt nicht mehr anmelden...
Ich habe in meinen Skripten keinen Fehler entdecken können.
Daher meine Frage an Euch: kennt Ihr dieses Phänomen? Habt Ihr eine Ahnung, was ich falsch mache?
Ich bin im Moment ziemlich ratlos.
Ach so - weitere Info: ich lasse für Paßwörter nur die Zeichenmenge [a-zA-Z0-9-_] zu.
Gibt es irgendetwas Besonderes, das man bei einem Login-System mit md5-verschlüsselten Paßwörtern in einer MySQL-Datenbank beachten muß?
Danke für Eure Denkanstöße!
Ciao,
Andreas
Hi,
Ich habe in meinen Skripten keinen Fehler entdecken können.
Daher meine Frage an Euch: kennt Ihr dieses Phänomen? Habt Ihr eine Ahnung, was ich falsch mache?
Nein. Die Theorie enthält keinen Fehler. Poste doch mal den _relevanten_ Code-Abschnitt, der das neue Passwort entgegennimmt, verschlüsselt und in die Datenbank einträgt.
Ach so - weitere Info: ich lasse für Paßwörter nur die Zeichenmenge [a-zA-Z0-9-_] zu.
Warum? Bringt das irgendetwas?
Schöne Grüße
Julian
Hallo,
Nein. Die Theorie enthält keinen Fehler. Poste doch mal den _relevanten_ Code-Abschnitt, der das neue Passwort entgegennimmt, verschlüsselt und in die Datenbank einträgt.
hm, war klar, daß die Frage kommt. Ich selber frage ja auch immer nach dem relevanten Code.
Das Problem ist, daß ich bei diesem Projekt alle wichtigen Funktionen in Klassen gekapselt habe. Ich müßte also eine ganze Menge posten, damit die Zusammenhänge verständlich werden.
Ich schau mal, ob ich den Fehler heute finde. Es scheint ja doch nichts Grundsätzliches zu sein, sondern irgendein dämlicher Flüchtigkeitsfehler.
Ciao,
Andreas
Hiho,
mal einfach so ind blaue geraten. Geh mal in dein Passwort-Änderungs-Script und mach dort mal direkt vor der Zeile md5($neues_Passwort) ein echo $neues_Passwort - also lass dir mal ausgeben was da wirklich verschlüsselt wird. Ich vermute mal da wirst du eine Überraschung erleben. Falls nicht (sprich falls da genau das steht, was da stehen sollte) lass dir mal das verschlüsselte Passwort ausgeben und vergleiche es mit dem was in der Datenbank gespeichert wurde. Mein zweiter Tipp wäre, das du vielleicht das bereits verschlüsselte Passwort ausversehen noch einmal durch ein md5() jagst.
Grüsse
Marc
Hallo,
Hiho,
mal einfach so ind blaue geraten. Geh mal in dein Passwort-Änderungs-Script und mach dort mal direkt vor der Zeile md5($neues_Passwort) ein echo $neues_Passwort - also lass dir mal ausgeben was da wirklich verschlüsselt wird.
ja, das werde ich wohl tun. Ich bin mir zwar sicher, daß ich das schon einmal getan habe - aber sicher ist sicher.
;)
Wäre natürlich mal wieder ein extrem blöder Fehler, aber das sind ja eh meistens die Fehler, die einen am längsten aufhalten.
Ciao,
Andreas
Hallo Andreas,
Die Paßwörter stehen als md5-verschlüsselte Zeichenketten in einer MySQL-Datenbank (in einem VARCHAR-Feld der Länge 100,
32 Zeichen reichen völlig aus.
Ich habe in meinen Skripten keinen Fehler entdecken können.
Wenn du es posten würdest, könnten wir es vielleicht ...
Ach so - weitere Info: ich lasse für Paßwörter nur die Zeichenmenge [a-zA-Z0-9-_] zu.
Warum diese künstliche Beschränkung? md5 ist es egal, mit welchen Zeichen es gefüttert wird.
Grüße aus Nürnberg
Tobias
Hallo,
Hallo,
32 Zeichen reichen völlig aus.
ja, weiß ich mittlerweile auch. Als ich die Datenbank in grauer Vorzeit anlegte, war mir das aber noch nicht klar.
;)
Ich habe in meinen Skripten keinen Fehler entdecken können.
Wenn du es posten würdest, könnten wir es vielleicht ...
Ist nicht so einfach möglich (s.u.).
Trotzdem danke.
Ciao,
Andreas