Datei-Hash-Verifizierungstool
MD5, SHA-1, SHA-256, SHA-384, SHA-512 Hashwerte von Dateien berechnen
Datei hierher ziehen und ablegen
Alle Dateitypen und Größen unterstützt
Was ist Datei-Hash?
Ein Datei-Hash berechnet aus dem Inhalt einer Datei einen festen Prüfwert. Dieselbe Datei erzeugt mit demselben Algorithmus immer denselben Digest, während schon eine minimale Änderung an einem Byte ein anderes Ergebnis liefern kann. Das ist nützlich, um Downloads zu verifizieren, Backups zu vergleichen, doppelte Dateien zu erkennen, Integrität nach einer Übertragung zu prüfen oder Sicherheitsmeldungen nachzuvollziehen. Dieses Werkzeug unterstützt Algorithmen wie MD5, SHA-1, SHA-256, SHA-384 und SHA-512. MD5 und SHA-1 sind für moderne Sicherheit nicht mehr geeignet, können aber für alte Checksummen oder einfache Erkennung weiterhin vorkommen; für Integritätsnachweise ist SHA-256 meist die bessere Wahl.
So geht's
So geht's
- Ziehen Sie eine Datei in den Upload-Bereich oder klicken Sie auf ‚Datei auswählen'
- Aktivieren Sie die gewünschten Hash-Algorithmen (Mehrfachauswahl möglich)
- Klicken Sie auf ‚Hash berechnen', um zu starten
- Nach der Berechnung können Sie einzelne Hash-Werte oder alle auf einmal kopieren
- Zur Überprüfung geben Sie einen bekannten Hash-Wert in das Vergleichsfeld ein
Verifizierungsablauf
- Berechnen Sie den Hash erst, nachdem die Datei vollständig heruntergeladen oder kopiert wurde – unvollständige Dateien und unterbrochene Übertragungen erzeugen andere Werte.
- Wenn Sie mit einer veröffentlichten Prüfsumme vergleichen, kopieren Sie diese aus der offiziellen Quelle und verwenden Sie exakt denselben Algorithmus.
Anwendungsfälle
Technisches Prinzip
Alle SHA-Digests auf der Seite laufen über die W3C Web Cryptography API, im Browser als crypto.subtle exponiert. Der Aufruf lautet await crypto.subtle.digest(algorithm, buffer), wobei algorithm einer von 'SHA-1', 'SHA-256', 'SHA-384' oder 'SHA-512' ist (Groß-/Kleinschreibung beachten) und buffer ein ArrayBuffer oder ein beliebiges TypedArray. Die Funktion liefert ein Promise, das in einen ArrayBuffer der Digest-Bytes auflöst; die Seite macht daraus Lowercase-Hex, indem sie ihn als Uint8Array durchläuft und jedes Byte über byte.toString(16).padStart(2, '0') abbildet. SubtleCrypto ist nur in sicheren Kontexten verfügbar (HTTPS oder localhost); SHA-1 bleibt für Legacy-Verifikationen verfügbar, obwohl die Spezifikation seine Kollisionsresistenz als gebrochen einstuft. MD5 ist nicht Teil der Web-Crypto-Spezifikation (das W3C ließ es wegen Kollisionsangriffen bewusst weg), daher wird MD5 auf dieser Seite von einer reinen JavaScript-Implementierung berechnet, die vollständig im Browser läuft. Für alle Algorithmen — MD5 und die SHA-Familie gleichermaßen — wird die Datei per FileReader.readAsArrayBuffer in einem Rutsch als ArrayBuffer eingelesen und an die JavaScript-MD5-Routine oder crypto.subtle.digest übergeben. Das Tool stellt keine inkrementelle .append-API und keinen Web-Worker-Fallback bereit, sodass die ganze Datei in den Speicher passen muss: Für übliche Downloads kein Problem, aber für mehrere Gigabyte große Daten ist ein Desktop-Tool besser geeignet, das von der Festplatte streamt (sha256sum, certutil -hashfile, Get-FileHash). Digestlängen und Sicherheitslage: MD5 = 128 Bit / 32 Hex-Zeichen (RFC 1321, Kollisionsresistenz seit Wang Xiaoyun 2004 gebrochen, 2012 von der Flame-Malware in der Praxis ausgenutzt); SHA-1 = 160 Bit / 40 Hex-Zeichen (FIPS 180-4, Kollision von Googles SHAttered 2017 mit ~9,2 × 10^18 SHA-1-Berechnungen demonstriert, NIST plant die formale Abschaffung nach 2030); SHA-256 = 256 Bit / 64 Hex-Zeichen (FIPS 180-4, keine bekannten Kollisionen, empfohlene Baseline); SHA-384 und SHA-512 = 384 / 512 Bit, die abgeschnittene und volle Ausgabe der SHA-512-Familie (FIPS 180-4). Der Lawineneffekt kryptographischer Hashes sorgt dafür, dass das Kippen eines einzelnen Eingabebits im Mittel etwa die Hälfte der Ausgabebits ändert — deshalb erzeugt ein einzelnes geändertes Byte einen völlig anderen Digest.
- crypto.subtle.digest(algorithm, buffer) akzeptiert 'SHA-1', 'SHA-256', 'SHA-384', 'SHA-512' (Groß-/Kleinschreibung beachten) und lehnt 'MD5' ab; erfordert einen sicheren Kontext (HTTPS oder localhost) und gibt ein Promise<ArrayBuffer> zurück.
- Hex-Kodierung: das Ergebnis als new Uint8Array(digestBuffer) durchlaufen und jedes Byte auf byte.toString(16).padStart(2, '0') abbilden; Digests groß-/kleinschreibungsunabhängig vergleichen (via .toLowerCase() normalisieren).
- MD5 fehlt bewusst in Web Crypto; dieses Tool berechnet MD5 in reinem JavaScript, liest die Datei per FileReader.readAsArrayBuffer als einen einzigen ArrayBuffer ein und erzeugt in einem Durchgang einen 32-stelligen Hex-Digest in Kleinbuchstaben.
- Speicherprofil: Die Seite liest die ganze Datei in einen einzigen ArrayBuffer (keine inkrementelle .append-API, kein Auslagern an einen Web Worker) und übergibt den Buffer in einem Aufruf an JavaScript-MD5 oder crypto.subtle.digest. Bei Dateien, die den verfügbaren Heap des Tabs übersteigen, wechsle zu einem Desktop-Tool (sha256sum, certutil -hashfile, Get-FileHash), das von der Festplatte streamt.
- Digest-Größen (FIPS 180-4): MD5 128-Bit, SHA-1 160-Bit, SHA-256 256-Bit, SHA-384 384-Bit, SHA-512 512-Bit; Hex-Zeichenanzahl ist doppelt so groß wie die Byte-Anzahl.
- Bekannte Kollisionsangriffe: MD5 gebrochen von Wang 2004, ausgenutzt von Flame 2012; SHA-1 gebrochen von Google SHAttered 2017 (ca. 9,2 x 10^18 Operationen, ca. 110 GPU-Jahre); SHA-256 und darüber haben keine bekannten praktischen Kollisionen.
- Lawineneffekt: eine ein-Bit-Eingabeänderung dreht im Durchschnitt ca. 50% der Ausgabebits; deshalb erzeugt eine Ein-Byte-Änderung einen völlig anderen Hex-Digest und Teil-Datei-Matches existieren nicht.
Beispiele
Heruntergeladene Datei gegen veröffentlichte Prüfsumme verifizieren
Datei: sample.bin (3 Bytes, Inhalt: abc)
SHA-256 (berechnet):
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
Vom Herausgeber veröffentlichte SHA256SUMS-Zeile:
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad sample.bin
Übereinstimmung -> Download ist intakt, nicht manipuliert
(Beide Werte sind der FIPS-180-2-SHA-256-Referenzvektor für die
3-Byte-Eingabe 'abc'. In der Praxis durch die echte Datei ersetzen;
die Algorithmusausgabe ist deterministisch.)Vergleich mehrerer Algorithmen auf derselben Eingabe
Datei: sample.txt (3 Bytes, Inhalt: abc)
MD5: 900150983cd24fb0d6963f7d28e17f72
SHA-1: a9993e364706816aba3e25717850c26c9cd0d89d
SHA-256: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-512: ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f
Verschiedene Algorithmen, gleiche Eingabe -> SHA-256 oder stärker für Sicherheitsprüfungen verwenden
(MD5 ist der Referenzvektor aus RFC 1321; die anderen sind FIPS-180-2-
Referenzvektoren, alle für die 3-Byte-Eingabe 'abc'.)Eine 1-Byte-Änderung erkennen (Lawineneffekt)
Eingabe A: abc (3 Bytes)
Eingabe B: abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq (56 Bytes)
SHA-256 von A: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-256 von B: 248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1
Eine kleine Änderung der Eingabe erzeugt einen völlig anderen
Digest -> das ist der Lawineneffekt in Aktion.
(Beide Werte sind FIPS-180-2-SHA-256-Referenzvektoren.)Browser-Konsolen-Referenz zur Verifikation
// Zur Vergleichszwecken in Node.js reproduzieren
$ printf 'abc' | shasum -a 256
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
// PowerShell unter Windows
PS> 'abc' | Get-FileHash -Algorithm SHA256 | Select-Object -ExpandProperty Hash
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
// In der Browser-Konsole mit der Web Crypto API:
// const buf = new TextEncoder().encode('abc');
// const hash = await crypto.subtle.digest('SHA-256', buf);
// -> ArrayBuffer des SHA-256 von 'abc' (FIPS-180-2-Referenzvektor)
Dateien bleiben in deinem Browser, nichts wird hochgeladen.FAQ
Welche Hash-Algorithmen kann ich erzeugen?
Üblich sind MD5, SHA-1, SHA-224, SHA-256, SHA-384 und SHA-512. Die Seite berechnet sie über die Web Crypto API des Browsers (SHA-Familie) und über integriertes JS für MD5. SHA-256 ist heute die empfohlene Allzweckwahl.
Wird die Datei irgendwo hochgeladen?
Nein. Das Hashing erfolgt vollständig in deinem Browser über die File API und Web Crypto. Die Bytes werden in Blöcken in den Speicher gelesen und der Hash lokal berechnet — die Datei verlässt nie das Netzwerk. Du kannst das im Netzwerk-Tab überprüfen, während du eine Datei hashst.
Warum wird MD5 noch angeboten, obwohl es geknackt ist?
MD5 ist sicherheitstechnisch geknackt (Kollisionen lassen sich leicht konstruieren), bleibt aber die De-facto-Prüfsumme, um zu verifizieren, dass ein Download bitidentisch zur Quelle ist — viele Anbieter veröffentlichen MD5 nach wie vor neben SHA-256. Verwende MD5 nur dafür, niemals für Passwort-Hashing oder Signaturen.
Warum sind meine SHA-256-Hashes für scheinbar identische Dateien unterschiedlich?
Hash-Eingaben enthalten jedes einzelne Byte, also ändern ein einzelnes nachgestelltes Newline, ein BOM oder unterschiedliche Zeilenenden (CRLF vs. LF) den Hash komplett. Lade das Original neu herunter, statt zu kopieren und einzufügen, oder nutze einen Binärdatei-Viewer, um zu prüfen, ob beide Dateien identische Bytes haben.
Gibt es eine Dateigrößenbegrenzung?
Der Browser muss genug Speicher haben, um die Datei zu lesen. Moderne Desktops kommen mit Dateien im Mehr-GB-Bereich klar, mobile Browser können bei einigen hundert MB an Speichergrenzen stoßen. Für sehr große Dateien nutze ein Desktop-Tool (sha256sum, certutil, Get-FileHash) — das streamt von der Festplatte und ist schneller.
Können zwei verschiedene Dateien denselben Hash erzeugen?
Theoretisch ja (Schubfachprinzip), aber bei SHA-256 ist die Wahrscheinlichkeit astronomisch gering. MD5 und SHA-1 haben bekannte Kollisionsangriffe, also belegen zwei Dateien mit gleichem MD5 oder SHA-1 nicht, dass sie identisch sind. SHA-256-Kollisionen sind mit bekannten Angriffen nicht praktikabel.
Warum unterscheiden sich meine Hashes vom auf der Website veröffentlichten Hash?
Meistens: Du hast eine lokalisierte, signierte oder umverpackte Version heruntergeladen; die Seite listet den Hash für eine andere Version; oder dein Download wurde abgeschnitten. Lade mit einem frischen Tool neu herunter und hashe erneut. Bleibt die Abweichung bestehen, vertraue der Datei nicht.