Computer-Masters.de > Artikel > Programmieren > PHP > PHP: Passwörter mit md5() verschlüsseln - Anwedungsbeispiel

PHP: Passwörter mit MD5 verschlüsseln

PHP md5()

Passwörter sind für interaktive Webseiten essentiell. Allerdings darf man Passwörter nie unverschlüsselt speichern, da dies ein großes Sicherheitsrisiko darstellt. Abhilfe kann hier neben anderen Absicherungen die in PHP integrierte Funktion md5() schaffen. Mit dieser kann man ganz einfach den MD5-Hashwert eines Strings ermitteln.

Strings mit md5() hashen

Der Aufruf von md5() ist selbsterklärend: Man übergibt den String dessen MD5-Hashwert man haben möchte und erhält den entsprechenden Rückgabestring.


PHP-Script

<?php
    $passwort
="asdf123";
    
    
$passwort_md5md5($passwort);
    
    echo 
"Der String '".$passwort."' wird mit md5() zu ".$passwort_md5;
?>
1

Hinweis: Beachten Sie, dass 'asdf123' KEIN sicheres Passwort ist und hier nur zu Demonstrationszwecken verwendet wird!

Der Code führt zu folgender Ausgabe:

 

Der String 'asdf123' wird mit md5() zu 6572bdaff799084b973320f43f09b363

 

Weiteres:

Seit PHP 5 gibt es bei der Funktion md5() einen zusätzlichen, optionalen Parameter, mit dem sich die Ausgabe auch binär darstellen lässt. Dazu muss man einfach als zweiten Parameter True übergeben. Der Standardwert des Parameters ist False, was zu einer hexadezimalen Ausgabe führt.


PHP-Script

<?php
    $passwort
="asdf123";
    
    
$passwort_md5hexmd5($passwort);
    
$passwort_md5binmd5($passworttrue);
    
    echo 
"Der String '".$passwort."' wird mit md5() zu ".$passwort_md5hex." (hex) oder ".$passwort_md5bin." (bin)";
?>
1

Die Ausgabe dieses Codebeispiels ist entsprechend:

 

Der String 'asdf123' wird mit md5() zu 6572bdaff799084b973320f43f09b363 (hex) oder erK3 ? c (bin)

 

Verschlüsselte Passwörter abprüfen

Mit MD5 lassen sich Passwörter wunderbar verschlüsseln. So weit so gut. Doch wie kann man nun prüfen ob ein Nutzer das richtige Passwort eingegeben hat? Schließlich lässt sich der MD5-Hash ja nicht einfach so wieder entschlüsseln.

Hier behilft man sich folgendermaßen: Man verschlüsselt das eingegebene Passwort ebenfalls mit MD5 und überprüft, ob die Hashwerte vom abgespeicherten Passwort und vom eingegebenem gleich sind. Falls ja, wurde das richtige Passwort eingegeben.

Hier als Codebeispiel:


PHP-Script

<?php
    $passwort
="asdf123";
    
    
$passworthash"6572bdaff799084b973320f43f09b363"##Aus Datenbank, Datei ...
    
    
$passwort_md5md5($passwort);
    
    echo 
"<b>Eingegebenes Passwort:</b> ".$passwort."<br>";
    
    if(
md5($passwort) == $passworthash)
    {
        echo 
"Die MD5-Haswerte entsprechen sich. Das Passwort stimmt.";
    }
    else
    {
        echo 
"Falsches Passwort!";
    }
?>
1

Der Code führt zu folgender Ausgabe:

Eingegebenes Passwort: asdf123
Die MD5-Haswerte entsprechen sich. Das Passwort stimmt.

Hinweis: Der Hashwert von 'asdf123' wurde hier hartcodiert. Im Regelfall stammt er allerdings aus der Datenbank oder einer Datei und muss natürlich dynamisch angefordert werden.

Weiterführendes

Diese Artikel könnten Sie vielleicht auch interessieren:

 

Sie haben noch Fragen?

Nutzen Sie einfach die Kommentarfunktion, die Ihnen auch als unregistrierter Leser zur Verfügung steht!

Gerne wird Ihnen bei Fragen zum Artikel weiter geholfen! Wenn Sie vom Artikel abweichende Fragen haben, können Sie gerne das Forum verwenden!

 

Kommentare

Kommentar von Marcel Cremer | 2015-06-01

Hallo zusammen,

ich habe diese Seite durch Zufall auf google gefunden und bin bei diesem Tutorial hängen geblieben. Vielleicht sollte er einmal aktualisiert werden, da MD5 danke schneller Rechner und Rainbowtables schon lange nicht mehr "sicher" ist und sich sehr schnell entsprechende Kollisionen finden lassen. Vielleicht könnte man in dem Artikel auf einen neuen Artikel verweisen, der zumindest SHA1 mit Salt anbietet (besser wäre es natürlich, wenn man noch einen anderen Hashalgorithmus der lange zum berechnen braucht vorstellt).

Beste Grüße
Marcel

Computer-Masters.de > Artikel > Programmieren > PHP > PHP: Passwörter mit md5() verschlüsseln - Anwedungsbeispiel

Anzeige: