Signatur
Beschreibung
md5() berechnet den kryptografischen Hash-Wert eines beliebigen Strings nach dem MD5-Algorithmus. Im Standardfall (ohne den zweiten Parameter) wird das Ergebnis als 32-stelliger Hexadezimal-String zurückgegeben (z. B. "5d41402abc4b2a76b9719d911017c592"). Wird $binary auf true gesetzt, liefert die Funktion stattdessen die rohen 16 Binär-Bytes zurück.
Einsatzgebiete: MD5 eignet sich gut für die schnelle Prüfsummen-Berechnung von Dateien oder Daten, zum Erzeugen eindeutiger Cache-Schlüssel sowie zum Vergleich von Dateiinhalten. Für das Hashing von Passwörtern ist MD5 jedoch absolut ungeeignet – hier sind spezialisierte Funktionen wie password_hash() zu verwenden.
Sicherheitshinweis: MD5 gilt seit Jahren als kryptografisch gebrochen. Kollisionen (zwei unterschiedliche Eingaben mit gleichem Hash) sind berechenbar. Für sicherheitskritische Anwendungen wie digitale Signaturen oder Integritätsprüfungen in Angriffs-Szenarien sollten stattdessen SHA-256 (hash('sha256', ...)) oder SHA-3 verwendet werden.
Die Funktion gibt für eine identische Eingabe stets denselben Hash zurück (deterministisch), ohne Salt oder Iterations-Faktor – ein weiterer Grund, warum Passwörter niemals mit md5() allein gespeichert werden sollten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der Eingabe-String, dessen MD5-Hash berechnet werden soll. Kann beliebige Binärdaten oder Text enthalten. | |
| $binary | bool | false | Wenn true, wird der Hash als roher 16-Byte-Binärstring zurückgegeben. Wenn false (Standardwert), wird ein 32-stelliger Hexadezimal-String zurückgegeben. |
Rückgabewert
$binary auf true gesetzt wurde.Beispiele
Einfacher MD5-Hash eines Strings
<?php
$text = 'Hallo Welt';
$hash = md5($text);
echo $hash;
// Ausgabe: eine 32-stellige Hex-Zeichenkette
MD5 als Cache-Schlüssel verwenden
<?php
$url = 'https://example.com/api/data?user=42&lang=de';
$cacheKey = 'cache_' . md5($url);
echo $cacheKey;
Prüfsumme einer Datei berechnen
<?php
$dateiinhalt = file_get_contents('/var/www/html/bild.jpg');
$pruefsumme = md5($dateiinhalt);
echo 'MD5-Prüfsumme: ' . $pruefsumme;
Rohe Binärausgabe (binary = true)
<?php
$rohHash = md5('Testdaten', true);
// 16 Binärbytes, z. B. für Base64-Kodierung geeignet
$base64Hash = base64_encode($rohHash);
echo $base64Hash;
// Wichtig · Fallstricke
Passwort-Hashing: MD5 darf niemals zum Speichern von Passwörtern verwendet werden — auch nicht mit einem manuell angehängten Salt. Verwende stattdessen password_hash() mit PASSWORD_BCRYPT oder PASSWORD_ARGON2ID und prüfe mit password_verify().
Kollisionsanfälligkeit: MD5-Kollisionen können in Sekunden erzeugt werden. Setze für Integritätsprüfungen, bei denen Angreifer die Eingabe kontrollieren könnten, auf hash('sha256', $string) oder hash('sha3-256', $string).
Timing-Attacken beim Vergleich: Wenn du zwei MD5-Hashes sicherheitsrelevant vergleichst, nutze hash_equals() anstelle von ===, um Timing-basierte Seitenkanal-Angriffe zu verhindern.