MySQL Password Funktion - Hash-Werte verlängern
Hallo liebe Community!
Ich habe einen Dump einer DB von einem MySQL Server 4.0 auf einem MySQL Server 5.1 einspielen müssen.
In besagter Datenbank wurde eine Spalte "User_Pwd" mit der MySQL PASSWORD() Funktion befüllt, sprich es stehen lauter Hashwerte in dieser Spalte.
Nun gibt es zu dieser DB auch eine Webanwendung, die sehr oft Abfragen ausführt alà "SELECT * FROM ... WHERE ... AND User_Pwd = PASSWORD('meinpasswort')" - das funktioniert ja leider nicht, denn die PASSWORD() Funktion in MySQL 5.1 liefert 41 Byte lange Hashwerte - und in der Tabelle stehen nur 16 Byte lange Werte. Der Vergleich schlägt also fehl.
Wie kann ich nun einen Vergleich durchführen OHNE die Hashwerte in der Spalte anrühren zu müssen?!
Vielen Dank für jeden Tipp!
Ich habe einen Dump einer DB von einem MySQL Server 4.0 auf einem MySQL Server 5.1 einspielen müssen.
In besagter Datenbank wurde eine Spalte "User_Pwd" mit der MySQL PASSWORD() Funktion befüllt, sprich es stehen lauter Hashwerte in dieser Spalte.
Nun gibt es zu dieser DB auch eine Webanwendung, die sehr oft Abfragen ausführt alà "SELECT * FROM ... WHERE ... AND User_Pwd = PASSWORD('meinpasswort')" - das funktioniert ja leider nicht, denn die PASSWORD() Funktion in MySQL 5.1 liefert 41 Byte lange Hashwerte - und in der Tabelle stehen nur 16 Byte lange Werte. Der Vergleich schlägt also fehl.
Wie kann ich nun einen Vergleich durchführen OHNE die Hashwerte in der Spalte anrühren zu müssen?!
Vielen Dank für jeden Tipp!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139912
Url: https://administrator.de/forum/mysql-password-funktion-hash-werte-verlaengern-139912.html
Ausgedruckt am: 30.04.2025 um 14:04 Uhr
3 Kommentare
Neuester Kommentar
Hallo sundrew,
lies dir mal folgendes durch:
http://dev.mysql.com/doc/refman/5.1/de/password-hashing.html
insbesondere den Teil
"Die Spalte Password muss breit genug sein, um lange Hashes (41 Bytes) aufzunehmen. Wenn die Spalte nicht aktualisiert wurde und noch die Breite von 16 Bytes hat, stellt der Server fest, dass lange Hashes nicht in die Spalte passen. Insofern werden nur kurze Hashes erzeugt, wenn ein Client passwortändernde Operationen mit PASSWORD(), GRANT oder SET PASSWORD durchführt. Dieses Verhalten tritt auf, wenn Sie auf Version 4.1 aktualisiert, aber das Skript mysql_fix_privilege_tables zur Verbreiterung der Spalte Password noch nicht ausgeführt haben. "
evtl. hilft dir das weiter, wenn du die Spalte der Passwort auf 16 begrenzt.
Lg
Matze
lies dir mal folgendes durch:
http://dev.mysql.com/doc/refman/5.1/de/password-hashing.html
insbesondere den Teil
"Die Spalte Password muss breit genug sein, um lange Hashes (41 Bytes) aufzunehmen. Wenn die Spalte nicht aktualisiert wurde und noch die Breite von 16 Bytes hat, stellt der Server fest, dass lange Hashes nicht in die Spalte passen. Insofern werden nur kurze Hashes erzeugt, wenn ein Client passwortändernde Operationen mit PASSWORD(), GRANT oder SET PASSWORD durchführt. Dieses Verhalten tritt auf, wenn Sie auf Version 4.1 aktualisiert, aber das Skript mysql_fix_privilege_tables zur Verbreiterung der Spalte Password noch nicht ausgeführt haben. "
evtl. hilft dir das weiter, wenn du die Spalte der Passwort auf 16 begrenzt.
Lg
Matze