So berechnest du einen Hash
Wähle Text oder Datei, den vom Protokoll geforderten Algorithmus und die Ausgabeform. Ein Hash ist nur dann nützlich, wenn die verglichenen Bytes und der erwartete Wert aus einer vertrauenswürdigen Quelle stammen.
- Wähle Texteingabe für UTF-8 oder eine lokale Datei für deren exakte Bytes.
- Wähle SHA-256, SHA-384 oder SHA-512; SHA-1 nur für alte Kompatibilität.
- Wähle Hex oder Standard-Base64 und berechne den Digest.
- Vergleiche den vollständigen Wert sowie Algorithmus, Kodierung und Eingabebytes.
Beispiele und erwartetes Verhalten
| Eingabe | Ausgabe | Hinweise |
|---|---|---|
| Text abc, SHA-256, Hex | ba7816bf8f01cfea414140de5dae2223… | Bekannter SHA-256-Testvektor. |
| Leerer Text, SHA-256 | e3b0c44298fc1c149afbf4c8996fb924… | Auch eine leere Bytefolge besitzt einen definierten Digest. |
| Text 你好, SHA-256 | Hash der UTF-8-Bytes | Nicht-lateinischer Text wird ohne Normalisierung als UTF-8 kodiert. |
| Lokale Datei | Hash der exakten Dateibytes | Dateiname und Metadaten sind nicht Teil des Digest. |
| Gleiche Bytes, Hex vs. Base64 | Andere Darstellung, gleicher Digest | Die Kodierung ändert nicht das kryptografische Ergebnis. |
| SHA-1 | Digest plus Warnung | Nur zur Interoperabilität mit Altsystemen, nicht für neue Kollisionssicherheit. |
Was ein kryptografischer Hash leistet
Eine Hashfunktion bildet beliebig viele Eingabebytes deterministisch auf einen Digest fester Länge ab. Eine kleine Eingabeänderung führt typischerweise zu stark anderer Ausgabe. Hashes helfen, unbeabsichtigte Änderungen zu erkennen und Inhalte zu adressieren.
Ein Hash verschlüsselt nicht und lässt sich nicht „entschlüsseln“. Niedrig-entropische Eingaben können durch Ausprobieren gefunden werden. Ohne vertrauenswürdigen erwarteten Wert beweist ein übereinstimmender Hash außerdem keine Herkunft.
- Deterministisch für identische Bytes.
- Feste Länge je Algorithmus.
- Keine Geheimhaltung oder Zugriffskontrolle.
Algorithmen und SHA-1-Warnung
Unterstützt werden SHA-1, SHA-256, SHA-384 und SHA-512 über Web Crypto. SHA-256 ist eine verbreitete moderne Wahl, doch Protokolle müssen exakt denselben Algorithmus vorgeben.
SHA-1 besitzt praktische Kollisionsangriffe und ist für neue Signaturen, Zertifikate oder kollisionsresistente Entscheidungen ungeeignet. Es bleibt nur verfügbar, um alte Prüfsummen oder Protokolle zu reproduzieren.
- SHA-256, SHA-384 und SHA-512 liefern 32, 48 beziehungsweise 64 Bytes.
- SHA-1 dient nur der Kompatibilität.
- Der vereinbarte Algorithmus darf nicht aus der sichtbaren Länge erraten werden.
Textbytes, Dateien und Kodierung
Texteingaben werden mit TextEncoder als UTF-8 ohne Unicode-Normalisierung kodiert. Visuell gleiche Zeichen können unterschiedliche Codepunktfolgen besitzen; auch Zeilenende, Leerraum und abschließender Umbruch ändern den Hash. Bei Dateien werden die ausgewählten Bytes gelesen, nicht Dateiname, Pfad, Änderungszeit oder andere Dateisystemmetadaten.
Hex stellt jedes Byte mit zwei Zeichen dar und ist leicht mit veröffentlichten Prüfsummen zu vergleichen. Base64 ist kompakter und kodiert dieselben Digestbytes mit einem anderen Alphabet; Standard-Base64 ist nicht automatisch Base64url. Die ganze Datei liegt für diese Browseroperation im Speicher, weshalb sehr große Dateien besser mit Streaming-Werkzeugen verarbeitet werden.
- CRLF und LF liefern verschiedene Hashwerte.
- Dateimetadaten sind nicht enthalten.
- Hex und Base64 stellen dieselben Digestbytes unterschiedlich dar.
Integritätsprüfung und Vertrauensquelle
Berechne den Hash der heruntergeladenen Datei und vergleiche ihn vollständig mit einem Wert aus signiertem Manifest, authentifiziertem Kanal oder vertrauenswürdigen Metadaten. Ein Angreifer, der Datei und ungeschützte Prüfsummenseite ändern kann, kann beide ersetzen.
Für gemeinsame Geheimnisse ist HMAC geeignet; für öffentlich überprüfbare Herkunft digitale Signatur. In empfindlichem Code sollte der Vergleich zeitkonstant erfolgen, auch wenn ein manueller Vergleich nur Diagnose ist.
- Algorithmus zusammen mit Wert speichern.
- Erwarteten Hash aus unabhängiger Quelle beziehen.
- Für Authentizität HMAC oder Signatur nutzen.
Anwendungen und Diagnose
Häufige Anwendungen sind Downloadprüfung, Vergleich von Exporten, Build-Artefakten, Cache-Schlüsseln und Testvektoren. Der lokale Modus vermeidet Uploads und erlaubt eine schnelle Reproduktion.
Dokumentiere bei Abweichungen die exakte Eingabe, den Algorithmus, die Kodierung und die Normalisierung. Prüfe Dateigröße, Kompression, BOM, Zeilenenden, Unicode und versteckte Metadaten im Dateiformat.
- Veröffentlichte Checksumme prüfen.
- Lokale Dateien vergleichen.
- Bekannte Vektoren testen.
- UTF-8-Probleme diagnostizieren.
Grenzen und Nicht-Ziele
Web Crypto ist erforderlich. Große Dateien werden vollständig in den Speicher geladen. Die Seite bricht keine Hashes, verschlüsselt nicht, signiert nicht, speichert keine Passwörter und prüft keine Malware-Reputation.
Passwörter benötigen langsame, gesalzene Verfahren wie Argon2, scrypt oder bcrypt. Ein schneller SHA-Digest ist dafür ungeeignet. Das Leeren der Seite löscht keine externen Zwischenablage- oder Systemcaches.
- Keine Passwortspeicherung mit einfachem SHA.
- Keine Streaming-Dateiverarbeitung.
- Keine Online-Reputationsabfrage.
Abgrenzung zu HMAC und UUID
Ein einfacher Hash hat keinen Schlüssel und kann von jedem reproduziert werden. HMAC fügt ein gemeinsames Geheimnis für Authentizität hinzu. UUID v4 ist zufällig und identifiziert, ohne vom Inhalt abgeleitet zu sein.
Nutze Hash für Prüfsummen, HMAC für gemeinsame Authentisierung, Signaturen für öffentliche Verifikation und UUID für Kennungen.