Moin,
Wird bei der Verwendung einer md5 Verschlüsselung ein Passwort von verschiedenen Anwendungen gleich erzeugt und somit das Gleiche in eine Datenbank geschrieben?
Schreib bitte 100 mal an eine Tafel deiner Wahl: "MD5 ist _keine_ Verschlüsselung." MD5 ist ein Hash-Algorithmus, ein kryptographisch halbwegs sicherer noch dazu. (Bzw. im kryptographischen Sinne ist MD5 bereits gebrochen, das hat aber für deine Anwendung keine Auswirkungen.)
Ich möchte mit einer PHP-Seite Zugangsdaten (Benutzername und Passwort(md5)) erstellen lassen. Damit soll ein Login zu einer anderen Anwendung auf meinem Server ermöglicht werden, die auf JSP und Java basiert. Das klappt leider nicht, da sich die PHP-md5 Passwörter von denen die via JSP-md5 erzeugt werden unterscheiden.
Wenn man MD5 im Zusammenhang mit Passwörtern einsetzt, möchte man meist erreichen, dass das Passwort zwar leicht geprüft werden kann (MD5(Passwort) ist leicht berechenbar), aber aus den Informationen in der Passwortdatenbank keine Rückschlüsse auf das Passwort zu ziehen sind (eine Umkehrfunktion die zu gegebenem MD5(Passwort) das Passwort ausgibt ist nicht bekannt bzw. nicht einfach berechenbar). Zu diesem Zweck führt man häufig noch ein sogenanntes 'Salt' ein, das sprichwörtliche Salz in der Suppe.
Da MD5 per definition für jedes Passwort ja den gleichen MD5-String erzeugt ergibt sich nämlich ein Problem: Was ist, wenn mehrere Benutzer das gleiche Passwort haben? Dann könnte man das in der Passwortdatenbank sehen, da sie auch den gleichen MD5-String hätten. Oder allgemeiner: Wenn man die Umkehrung von MD5 nicht berechnen kann, baut man sich halt einfach (naja) ein Wörterbuch in dem für die üblichen Passwörter (Liebe, Sex, Geheim und Gott, etc.) die entsprechenden MD5-Summen verzeichnet sind. Wenn man dann Zugriff (wie auch immer) auf die Passwortdatenbank hat, schaut man einfach in dieser Liste nach.
Mit dem Salt verhindert man all dies, indem man zusätzlich zu dem eigentlichen Passwort noch einen zufälligen String mithasht (den muss man sich natürlich merken). Also anstatt MD5(Passwort) zu berechnen, berechnet man MD5(Salt + Passwort) und speichert das zusammen mit dem Salt.
Ob und wie das relevant für dich ist, lässt sich mit den Informationen die du gegeben hast nicht entscheiden. Schlag entweder in der Dokumentation der Funktionen die du verwendet hast nach, da müsste das Salt erwähnt werden, wenn es verwendet wird, oder gib Codebeispiele.
Henryk Plötz
Grüße aus Berlin
~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~