MD5 Hash Generator
MD5-Hash aus beliebigem Text generieren
Eingabetext
MD5-Hash
MD5-Hash wird hier angezeigt…
Was ist MD5-Hashing?
MD5 (Message-Digest Algorithm 5) ist eine kryptografische Hash-Funktion, die aus beliebigen Eingaben einen festen 128-Bit-(16-Byte-)Digest erzeugt, unabhängig von der Eingabegröße. 1992 von Ronald Rivest als RFC 1321 veröffentlicht, wurde MD5 als schnellerer Nachfolger von MD4 entwickelt und avancierte schnell zu einer der am weitesten verbreiteten Hash-Funktionen im Internet. Der Algorithmus verarbeitet Eingaben in 512-Bit-Blöcken durch vier Runden mit je 16 Operationen — pro Runde mit einer anderen nichtlinearen Funktion — und erzeugt dabei einen 32-stelligen hexadezimalen Fingerabdruck.
Eine Hash-Funktion ist eine Einwegumwandlung: Aus einer Eingabe lässt sich der Hash sofort berechnen, aber aus dem Hash allein kann die ursprüngliche Eingabe nicht wiederhergestellt werden. Selbst eine einzelne Bit-Änderung in der Eingabe erzeugt einen völlig anderen Digest — eine Eigenschaft, die als Lawineneffekt bezeichnet wird. MD5 bildet einen unendlichen Eingaberaum auf einen festen 128-Bit-Ausgaberaum ab, weshalb Kollisionen (zwei verschiedene Eingaben mit demselben Hash) mathematisch garantiert existieren; eine sichere Hash-Funktion macht das Auffinden solcher Kollisionen jedoch rechnerisch undurchführbar.
Seit 2004 haben Forscher praktische Kollisionsangriffe gegen MD5 nachgewiesen, weshalb der Algorithmus für digitale Signaturen, Zertifikate oder andere Anwendungen, bei denen Kollisionsresistenz erforderlich ist, nicht mehr als sicher gilt. Für nicht sicherheitskritische Zwecke wird MD5 jedoch weiterhin häufig eingesetzt: zur Überprüfung der Dateiintegrität nach Downloads, zur Generierung von Cache-Schlüsseln, zur Inhalts-Deduplizierung und zur Erstellung deterministischer Bezeichner aus Strings. Für diese Anwendungen machen Geschwindigkeit und breite Bibliotheksunterstützung des Algorithmus ihn zur praktischen Wahl. 2008 veröffentlichten Marc Stevens und Kollegen einen Chosen-Prefix-Kollisionsangriff, bei dem ein Angreifer zwei Dokumente mit beliebig gewählten Präfixen erstellen kann, die denselben Digest teilen. Diese Technik wurde beim Chaos Communication Congress 2008 demonstriert, indem ein gefälschtes Zertifizierungsstellen-Zertifikat konstruiert wurde. Die Flame-Malware von 2012 nutzte anschließend Chosen-Prefix-Kollisionen, um ein Microsoft-Code-Signing-Zertifikat zu fälschen, was Malware ermöglichte, sich als legitimes Windows-Update-Paket auszugeben. Diese realen Exploits bestätigten, dass der Algorithmus für vertrauensbasierte Anwendungen kryptografisch gebrochen ist und nicht eingesetzt werden sollte, wenn ein Angreifer die gehashten Eingaben beeinflussen kann.
Warum diesen MD5-Generator verwenden?
MD5-Hashes sofort generieren — ohne Installation oder Code schreiben. Text einfügen und den 32-stelligen Hex-Digest in Echtzeit erhalten.
MD5-Anwendungsfälle
MD5 vs. andere Hash-Algorithmen
MD5 ist der schnellste und kürzeste unter den gängigen Hash-Algorithmen, bietet aber die schwächsten Sicherheitsgarantien. Die folgende Tabelle vergleicht Digest-Größen, Standards und geeignete Anwendungsfälle der einzelnen Algorithmen.
| Algorithmus | Digest-Größe | Hex-Länge | Standard | Geeignet für |
|---|---|---|---|---|
| MD5 | 128 bits | 32 hex chars | 1992 / RFC 1321 | Checksums, non-security fingerprints |
| SHA-1 | 160 bits | 40 hex chars | 1995 / RFC 3174 | Legacy git commits (being replaced) |
| SHA-256 | 256 bits | 64 hex chars | 2001 / FIPS 180-4 | TLS certificates, blockchain, JWTs |
| SHA-384 | 384 bits | 96 hex chars | 2001 / FIPS 180-4 | Government systems, higher security margin |
| SHA-512 | 512 bits | 128 hex chars | 2001 / FIPS 180-4 | Digital signatures, HMAC with large keys |
| SHA-3 | 256 bits | 64 hex chars | 2015 / FIPS 202 | Post-quantum readiness, backup standard |
| BLAKE3 | 256 bits | 64 hex chars | 2020 | High-performance checksums, Merkle trees |
Wie MD5 funktioniert
MD5 verarbeitet Eingaben über eine Merkle-Damgård-Konstruktion: Die Nachricht wird auf ein Vielfaches von 512 Bit aufgefüllt, in Blöcke aufgeteilt, und jeder Block wird durch vier Runden mit je 16 bitweisen Operationen geführt, die die Eingabe mit vorberechneten sinusabgeleiteten Konstanten mischen. Das Ergebnis ist ein 128-Bit-Zustand, der zum endgültigen Digest wird.
Jede Runde wendet eine eigene nichtlineare Hilfsfunktion auf drei der vier 32-Bit-Zustandswörter (A, B, C, D) an. Runde 1 verwendet F(B,C,D) = (B AND C) OR (NOT B AND D) — einen bitweisen bedingten Selektor. Runde 2 verwendet G(B,C,D) = (B AND D) OR (C AND NOT D) — einen komplementären Selektor. Runde 3 verwendet H(B,C,D) = B XOR C XOR D — eine Paritätsfunktion. Runde 4 verwendet I(B,C,D) = C XOR (B OR NOT D) — einen asymmetrischen Kombinierer. Diese vier Funktionen stellen sicher, dass jedes Bit der Eingabe den Ausgabe-Digest beeinflusst und so den Lawineneffekt erzeugt, durch den kleine Eingabeänderungen zu großen, unvorhersehbaren Änderungen des resultierenden Hashs führen.
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)
Der Algorithmus läuft in fünf Phasen ab: (1) Ein 1-Bit anhängen, dann Nullen, bis die Nachrichtenlänge 448 mod 512 ergibt; (2) die ursprüngliche Nachrichtenlänge als 64-Bit-Little-Endian-Integer anhängen; (3) vier 32-Bit-Zustandsvariablen (A, B, C, D) mit festen Konstanten initialisieren; (4) jeden 512-Bit-Block durch 64 Operationen mit vier nichtlinearen Funktionen (F, G, H, I) verarbeiten, eine pro Runde mit je 16 Operationen; (5) den resultierenden Zustand zur laufenden Summe addieren und den endgültigen 128-Bit-Hash in Little-Endian-Byte-Reihenfolge ausgeben.
Code-Beispiele
MD5-Hashes in gängigen Sprachen und Umgebungen generieren. Hinweis: MD5 ist in der Browser Web Crypto API nicht verfügbar — eine Bibliothek oder Node.js verwenden.
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module
// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"
// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"import hashlib
# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result) # → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"
# Hash a file
with open('file.bin', 'rb') as f:
md5 = hashlib.md5()
for chunk in iter(lambda: f.read(8192), b''):
md5.update(chunk)
print(md5.hexdigest())package main
import (
"crypto/md5"
"fmt"
)
func main() {
data := []byte("hello world")
hash := md5.Sum(data)
fmt.Printf("%x\n", hash)
// → 5eb63bbbe01eeed093cb22bb8f5acdc3
}# Using md5sum (Linux) or md5 (macOS) echo -n "hello world" | md5sum # → 5eb63bbbe01eeed093cb22bb8f5acdc3 - # macOS echo -n "hello world" | md5 # → 5eb63bbbe01eeed093cb22bb8f5acdc3 # Hash a file md5sum package.json # → a1b2c3d4e5f6... package.json # Using openssl (cross-platform) echo -n "hello world" | openssl md5 # → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3