Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 
 

PHP md5(): MD5-Hash erzeugen und richtig einsetzen

Sie befinden sich: Home > Php Tutorial > PHP md5(): MD5-Hash erzeuge...

PHP md5(): MD5-Hash erzeugen und richtig einsetzen


Eintrag am:  14.04.2026
Hits / Besucher:  25
Sprache:  Deutsch
Kategorie:  Fortgeschrittene Tut...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die PHP-Funktion md5() erzeugt aus einem beliebigen String einen 128-Bit-Hashwert und gibt ihn als 32-stellige Hexadezimalzahl zurück. Der Algorithmus wurde 1991 von Ronald Rivest (RSA) entwickelt und gehört zu den bekanntesten Einweg-Hash-Funktionen. In diesem Tutorial erfährst du, wie md5() funktioniert, wofür du die Funktion noch sinnvoll einsetzen kannst und warum sie für Passwörter längst nicht mehr geeignet ist.

Illustration zum Tutorial: PHP md5(): MD5-Hash erzeugen und richtig einsetzen

Zum Einstieg wird erklärt, wie der MD5-Algorithmus arbeitet und welche Eigenschaften einen kryptografischen Hash auszeichnen.

Was ist MD5?

MD5 steht für Message-Digest Algorithm 5. Die Funktion nimmt eine Eingabe beliebiger Länge entgegen und erzeugt daraus eine Prüfsumme mit einer festen Länge von 32 hexadezimalen Zeichen. Dieser Vorgang ist eine Einweg-Operation: Aus dem erzeugten Hash lässt sich der ursprüngliche Wert nicht zurückrechnen. Selbst kleinste Änderungen an der Eingabe führen zu einem völlig anderen Hashwert.

graph LR
    A["Eingabe: Hallo Welt"] --> B["md5()"]
    B --> C["32-stelliger Hex-Hash"]
    D["Eingabe: Hallo welt"] --> E["md5()"]
    E --> F["Komplett anderer Hash"]

Syntax und Parameter

Die Funktion md5() erwartet einen String als Pflichtparameter und einen optionalen booleschen Wert für die Ausgabe im Binärformat.

<?php

/* Syntax der md5-Funktion */
md5(string $string, bool $raw_output = false): string

/* $string: Der zu hashende Text (Pflichtparameter) */
/* $raw_output: false = 32 Zeichen Hex, true = 16 Byte Binärstring */

Wenn der Parameter raw_output auf true gesetzt wird, gibt die Funktion den Hash als 16 Byte langen Binärstring zurück. Im Standardfall (false) erhältst du die übliche 32-stellige Hexadezimalzahl.

MD5-Hash erzeugen

Das Erzeugen eines MD5-Hashes ist mit PHP denkbar einfach. Die folgenden Beispiele zeigen die grundlegende Verwendung der Funktion.

<?php

/* Einfachen MD5-Hash erzeugen */
$text = "Hallo Welt";
$hash = md5($text);

echo $hash;
/* Ausgabe: d41aee10dc8e004dad6fb5e23a8bfab6 */

/* Hash mit raw_output als Binärstring */
$raw = md5($text, true);
echo strlen($raw);
/* Ausgabe: 16 */

/* Zwei Strings vergleichen */
$hash1 = md5("PHP Tutorial");
$hash2 = md5("PHP tutorial");

if ($hash1 !== $hash2) {
echo "Die Hashes unterscheiden sich.";
}
/* Groß- und Kleinschreibung erzeugt verschiedene Hashes */

Wie das Beispiel zeigt, reicht bereits die Änderung eines einzigen Buchstabens, um einen vollkommen anderen Hash zu erhalten. Diese Eigenschaft macht MD5 nützlich für Integritätsprüfungen.

md5_file(): Prüfsumme einer Datei berechnen

Neben md5() bietet PHP die Funktion md5_file(), die den Hash direkt aus dem Inhalt einer Datei berechnet. Das ist effizienter, als den gesamten Dateiinhalt zuerst in eine Variable zu laden.

<?php

/* Prüfsumme einer Datei berechnen */
$datei = "dokument.pdf";
$hash = md5_file($datei);

echo "MD5-Prüfsumme: " . $hash;

/* Zwei Dateien auf identischen Inhalt prüfen */
$hash_original = md5_file("original.zip");
$hash_kopie = md5_file("kopie.zip");

if ($hash_original === $hash_kopie) {
echo "Die Dateien sind identisch.";
} else {
echo "Die Dateien unterscheiden sich.";
}

Mit md5_file() lassen sich Dateiübertragungen verifizieren oder doppelte Dateien in einem Verzeichnis aufspüren, ohne den gesamten Inhalt byteweise vergleichen zu müssen.

Warum MD5 für Passwörter unsicher ist

Seit 2004 gilt MD5 als nicht mehr kollisionssicher. Forscher haben bewiesen, dass sich zwei unterschiedliche Eingaben finden lassen, die denselben Hash erzeugen. Darüber hinaus sind MD5-Hashes anfällig für Brute-Force-Angriffe und Rainbow-Table-Attacken, da moderne Hardware Milliarden von MD5-Hashes pro Sekunde berechnen kann. Ein MD5-gehashtes Passwort lässt sich daher in Sekunden knacken. Für die sichere Speicherung von Passwörtern solltest du deshalb ausschließlich moderne Hashing-Verfahren verwenden.

Sichere Alternativen

PHP bietet leistungsfähige Alternativen, die für sicherheitskritische Anwendungen entwickelt wurden.

password_hash() für Passwörter

Die Funktion password_hash() nutzt standardmäßig den bcrypt-Algorithmus und erzeugt automatisch einen zufälligen Salt. In Kombination mit password_verify() ergibt sich ein sicheres System zur Passwortverwaltung.

<?php

/* Passwort sicher hashen mit password_hash() */
$passwort = "MeinSicheresPasswort123";
$hash = password_hash($passwort, PASSWORD_DEFAULT);

echo $hash;
/* Ausgabe: $2y$10$... (bcrypt-Hash mit Salt) */

/* Passwort bei Login verifizieren */
$eingabe = "MeinSicheresPasswort123";

if (password_verify($eingabe, $hash)) {
echo "Passwort ist korrekt.";
} else {
echo "Passwort ist falsch.";
}

hash() für allgemeine Hashes (SHA-256, SHA-512)

Für allgemeine kryptografische Zwecke stellt PHP die Funktion hash() bereit. Sie unterstützt zahlreiche Algorithmen wie SHA-256 und SHA-512, die deutlich kollisionssicherer als MD5 sind.

<?php

/* SHA-256-Hash erzeugen */
$text = "Wichtige Daten";
$sha256 = hash("sha256", $text);

echo $sha256;
/* Ausgabe: 64-stelliger Hexadezimal-Hash */

/* SHA-512 für noch längere Hashes */
$sha512 = hash("sha512", $text);

echo $sha512;
/* Ausgabe: 128-stelliger Hexadezimal-Hash */

Wofür MD5 noch sinnvoll ist

Trotz der kryptografischen Schwächen hat MD5 weiterhin seine Berechtigung in nicht sicherheitskritischen Bereichen. Für Cache-Schlüssel eignet sich MD5 hervorragend, da aus langen URLs oder Abfragen ein kompakter Schlüssel erzeugt werden kann. Bei Dateivergleichen lässt sich über die Prüfsumme schnell feststellen, ob sich eine Datei verändert hat. Auch als ETag-Header in HTTP-Antworten wird MD5 häufig eingesetzt, um dem Browser mitzuteilen, ob sich eine Ressource geändert hat. Ebenso bietet sich MD5 an, um eindeutige Dateinamen für hochgeladene Dateien zu generieren oder Daten in gleichmäßig verteilte Buckets aufzuteilen.

Zum schnellen Ausprobieren verschiedener Hash-Algorithmen steht der MD5- und Hash-Generator als Online-Werkzeug bereit.

Fazit

Die Funktion md5() ist in PHP schnell und unkompliziert einsetzbar. Sie erzeugt zuverlässig einen 32 Zeichen langen Hashwert und eignet sich für Dateivergleiche, Cache-Schlüssel und Integritätsprüfungen. Für die sichere Speicherung von Passwörtern ist MD5 jedoch keine Option mehr. Verwende stattdessen password_hash() mit bcrypt oder die hash()-Funktion mit SHA-256 bzw. SHA-512 für kryptografisch anspruchsvolle Aufgaben. So nutzt du für jeden Anwendungsfall das passende Werkzeug.

 


Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.