Themen
Tutorials
Tools
MD5-Hash-Generator
Zeichenketten lassen sich durch verschiedene Algorithmen verschlüsseln (generieren), z.B. durch den 128-Bit-Hash MD5 (Message Digest Algorithm 5).
Zeichenkette als MD5-Hash generieren
Geben Sie eine beliebige Zeichenkette ein:
Wofür braucht man so etwas?
Mit Hash-Werten lassen sich z.B. Passwörter auf eine relativ sichere Weise vergleichen. Es geht also in erster Linie darum sensible Daten zu schützen und einen Hacker-Angriff (SQL-Injection) zu erschweren. Ein Passwortvergleich könnte in etwa so aussehen:

Die Funktion compare_userdata() sucht in der Datenbank nach einem Nutzer, dessen 'username' = der eingegebene Benutzername ($this->username) und 'password' = das eingegebene Passwort ($this->password) sein soll. Wird kein Datensatz gefunden, in welchem beide Angaben mit den Eingabedaten übereinstimmen, wenn also mysql_num_rows($this->sql) == 0 ist (Zeile 44), dann war mindestens eine der beiden Eingaben falsch.
Interessant sind jetzt die Zeilen 42 und 43, denn hier lässt sich das Prinzip gut erkennen. In Zeile 42 wird der gespeicherte Benutzername aus der Datenbank durch die MySQL-Funktion MD5() direkt in der Abfrage generiert, ebenso der eingegebene Benutzername, allerdings nicht durch MySQL, sondern durch die PHP-Funktion md5(). Jetzt lassen sich beide verschlüsselten Strings vergleichen. Das Passwort dagegen ist bereits in der Datenbank verschlüsselt gespeichert (Passwörter sollten generell so hinterlegt sein). Also muss in der Abfrage jetzt nur das eingegebene Passwort generiert werden, damit ein Vergleich möglich ist.
Falls es erforderlich sein sollte das Passwort zu ändern, ließe es sich so bewerkstelligen:

Das neu eingegebene Passwort wird mit der PHP-Funktion md5() generiert (Zeile 51) und in diesem Zustand in der Datenbank gespeichert. Die Benutzer-ID aus der Datenbank und die mitgelieferte ID müssen wieder zuerst verschlüsselt und anschließend verglichen werden (Zeile 52).
Eine 100%ige Sicherheit bietet MD5 zwar nicht, aber zumindest für Webseiten, deren Inhalt nicht unbedingt zu sehr aufwändigen Hacker-Angriffen motivieren, sollte dieser Algorithmus, welcher mit 128 Bit bis zu 4.294.967.296 (2 hoch 32) verschiedene Konstellationen generieren kann, einen passablen Schutz bieten.
Hash-Algorithmus SHA-1
Es gibt neben MD5 noch eine Reihe anderer Möglichkeiten Werte zu verschlüsseln, z.B. über SHA-1 (Secure Hash Algorithm). Dieser enthält sogar im Gegensatz zu MD5 einen 160-Bit-Hash und sollte ursprünglich als kollisionssicher gelten, allerdings ist das bereits durch effektive Kollisionsberechnungen widerlegt worden. Somit gilt der Einsatz des SHA-1-Algorithmus ebenfalls nicht als 100% sicher.
