Hash Generator — Manual

Alle Funktionen des Hash Generators: 20 Verfahren live, HMAC, Formate, Vergleich, SRI, Datei-Streaming, bcrypt/Argon2id/PBKDF2 und Verlauf.

Zurück zur Übersicht: Hash Generator · Tool live öffnen: www.jpkc.com/tools/hash/

Dieses Manual beschreibt den Hash Generator vollständig: das Text-Hashing mit allen Algorithmen, HMAC, Ausgabeformaten, Vergleich und SRI, das Datei-Hashing und den Bereich für Passwort-Hashes. Die Oberfläche des Tools ist auf Englisch — die Feld- und Button-Bezeichnungen werden hier deshalb in ihrer englischen Original-Schreibweise genannt (mit deutscher Erläuterung), damit du dich im echten Interface zurechtfindest.

Aufbau der Oberfläche

Das Tool gliedert sich in drei Reiter (Tabs):

  1. Text — links die Eingabe (Input) mit Eingabe-Kodierung und dem optionalen HMAC key, rechts das Vergleichsfeld, das Ausgabeformat (Output) und die Ergebnistabelle mit allen Algorithmen.
  2. File — links die Ablagefläche für eine Datei, die Algorithmen-Auswahl und der Fortschritt, rechts das Vergleichsfeld und die Ergebnistabelle.
  3. Password hashing — links Create a hash (bcrypt, Argon2id, PBKDF2 erzeugen), rechts Verify a password (einen gespeicherten Hash prüfen).

Die Reiter wechselst du per Klick oder mit den Pfeiltasten ← und →. Das Tool merkt sich den zuletzt genutzten Reiter. Per Anker in der URL öffnest du einen Reiter direkt: #text, #file oder #password (etwa https://www.jpkc.com/tools/hash/#password) — ein solcher Anker hat Vorrang vor dem gemerkten Reiter. Unter allen Reitern liegt die Fußleiste mit dem Schalter für den Verlauf (siehe Verlauf und Speicherung).

Text-Hashing

Eingabe und Ablauf

Du tippst oder fügst deinen Text in das Feld Input (Platzhalter „Type or paste text — all hashes update live"). Die Tabelle rechts aktualisiert sich live — kurz nach jedem Tastendruck (rund 120 ms Verzögerung) stehen alle 20 Hashes neu da. Du musst nichts anklicken. Schon bei leerem Feld zeigt die Tabelle die Hashes der leeren Eingabe; die Info-Zeile unter dem Feld meldet dann „hashes of the empty input".

Die Info-Zeile nennt außerdem die Größe der Eingabe in Bytes (bzw. KB/MB) und, falls gesetzt, die Länge des HMAC-Schlüssels („HMAC key N bytes"). Fehler bei der Dekodierung erscheinen an derselben Stelle in Rot.

Eingabe-Kodierung

Über die Auswahl rechts über dem Feld legst du fest, wie das Tool deine Eingabe in Bytes übersetzt:

  • Text (UTF-8) (Standard) — das Tool hasht die UTF-8-Bytes des Textes, genau so, wie er im Feld steht. Zeilenumbrüche liefert das Feld dabei immer als \n (LF), auch wenn du Text mit \r\n (CRLF) einfügst. Für Inhalte mit CRLF nimmst du Hex bytes oder den Reiter File.
  • Hex bytes — die Eingabe ist eine Folge von Hex-Bytes. Präfixe 0x und \x sowie Leerzeichen, Zeilenumbrüche, :, , und - als Trenner werden ignoriert. Ungültige Zeichen oder eine ungerade Zahl an Ziffern melden „Not hex: …".
  • Base64 bytes — die Eingabe ist Base64. Leerraum ist egal, die URL-sichere Variante (-, _) wird akzeptiert, das =-Padding darf fehlen. Fehler melden „Not Base64: …".

Damit hashst du auch Binärdaten, die du nur als Hex-Dump oder Base64-String vorliegen hast.

Ausgabe-Encoding

Die Auswahl Output über der Tabelle bestimmt das Format aller Werte:

  • hex — Hexadezimal, kleingeschrieben (Standard).
  • HEX — Hexadezimal, großgeschrieben.
  • Base64 — Standard-Base64 mit =-Padding.
  • Base64URL — URL-sichere Variante (- und _), ohne Padding.

Das Tool merkt sich das gewählte Format. Es gilt auch für die Tabelle im Reiter File; die Auswahl selbst sitzt aber nur im Reiter Text. Jede Zeile der Tabelle hat einen eigenen Copy-Button, der den Wert im gerade gewählten Format in die Zwischenablage legt.

Die Algorithmen im Detail

Die Tabelle zeigt immer alle 20 Verfahren, gruppiert in vier Blöcke. Ein Tooltip auf dem Namen erklärt Besonderheiten. Die Hex-Längen gelten für das Format hex.

Legacy (not collision-resistant)

  • MD5 — 128 Bit, 32 Hex-Zeichen. Kryptografisch gebrochen (Kollisionen praktisch erzeugbar). Nur als Prüfsumme gegen versehentliche Veränderung.
  • SHA-1 — 160 Bit, 40 Hex-Zeichen. Ebenfalls gebrochen; nur für Kompatibilität.
  • RIPEMD-160 — 160 Bit, 40 Hex-Zeichen.
  • CRC-32 — 32 Bit, 8 Hex-Zeichen. Die Prüfsumme nach IEEE 802.3, wie sie zip, gzip und PNG verwenden — laut Tooltip „checksum, not a cryptographic hash".

SHA-2

  • SHA-224 — 56 Hex-Zeichen.
  • SHA-256 — 64 Hex-Zeichen. Der heutige Standard für Datei-Integrität.
  • SHA-384 — 96 Hex-Zeichen.
  • SHA-512 — 128 Hex-Zeichen.
  • SHA-512/256 — die auf 256 Bit gekürzte Variante aus der SHA-512-Familie; 64 Hex-Zeichen.

SHA-3 (FIPS 202)

  • SHA3-224, SHA3-256, SHA3-384, SHA3-512 — die standardisierte SHA-3-Familie nach FIPS 202 (56, 64, 96 bzw. 128 Hex-Zeichen).
  • Keccak-256, Keccak-512 — das ursprüngliche Keccak mit dem Padding von vor der Standardisierung. Keccak-256 ist das Verfahren, das Ethereum verwendet. Es liefert für dieselbe Eingabe andere Werte als SHA3-256.
  • SHAKE128 (256 Bit Ausgabe, 64 Hex-Zeichen) und SHAKE256 (512 Bit, 128 Hex-Zeichen) — Funktionen mit frei wählbarer Ausgabelänge (XOF); das Tool gibt sie in diesen festen Längen aus.

Hinweis für alte Werte: Frühere Versionen des Tools gaben unter „SHA-3" in Wahrheit Keccak aus. Ein SHA-3-Wert, den du vor dem Umbau hier berechnet hast, stimmt deshalb nicht mit dem heutigen SHA3-Ergebnis überein. Einen alten SHA3-256- bzw. SHA3-512-Wert (auch aus dem Datei-Bereich) findest du in der Zeile Keccak-256 bzw. Keccak-512 wieder. Für alte SHA3-224- und SHA3-384-Werte hat das Tool heute kein Gegenstück mehr.

BLAKE

  • BLAKE2b-512 — 128 Hex-Zeichen.
  • BLAKE2s-256 — 64 Hex-Zeichen.
  • BLAKE3 — Standardausgabe 256 Bit, 64 Hex-Zeichen.

HMAC — schlüsselbasierte Authentifizierung

HMAC steht für Keyed-Hash Message Authentication Code. Anders als ein reiner Hash kombiniert HMAC die Nachricht mit einem geheimen Schlüssel — so lässt sich nicht nur prüfen, ob eine Nachricht unverändert ist, sondern auch, dass sie von jemandem mit dem Schlüssel stammt (Authentizität). Typischer Einsatz: API-Request-Signaturen und Webhook-Verifizierung.

So nutzt du es:

  1. Trag deinen Schlüssel in das Feld HMAC key ein (im Tool beschriftet mit „optional — shows HMACs instead of plain hashes").
  2. Wähl daneben die Kodierung des Schlüssels: Text, Hex oder Base64. Ein Webhook-Secret im Klartext bleibt auf Text; ein als Hex oder Base64 ausgelieferter Schlüssel wird so als Rohbytes verwendet.
  3. Die Tabelle zeigt sofort statt der reinen Hashes die HMACs — jede betroffene Zeile trägt das Badge HMAC.

HMAC gibt es für alle Verfahren außer SHAKE128, SHAKE256, BLAKE3 und CRC-32. Diese vier Zeilen zeigen bei gesetztem Schlüssel weiter den reinen Hash und tragen das Badge plain („No HMAC for this algorithm"). Solange ein Schlüssel eingetragen ist, entfällt die SRI-Zeile. Leerst du das Feld, kehrt die Tabelle zu den reinen Hashes zurück.

Zufallsschlüssel (Würfel-Button)

Der Button mit dem Würfel-Symbol rechts neben dem Schlüsselfeld („Generate random key") erzeugt einen 256-Bit-Zufallsschlüssel (32 Byte) mit dem kryptografischen Zufallsgenerator des Browsers (crypto.getRandomValues), trägt ihn als 64 Hex-Zeichen ein und stellt die Schlüssel-Kodierung auf Hex. Der Schlüssel entsteht vollständig lokal; es gibt dabei keinen Server-Aufruf.

Vergleich mit einem erwarteten Hash

Über der Tabelle liegt das Feld „Paste an expected hash to compare…". Fügst du dort einen Wert ein, sucht das Tool in allen Zeilen nach einem Treffer:

  • Passt ein Algorithmus, wird seine Zeile grün hinterlegt, und darüber steht „Match:" mit dem Namen (bei HMAC mit dem Zusatz „(HMAC)"). So erfährst du nebenbei, welches Verfahren einen unbekannten Hash erzeugt hat.
  • Passt keiner, meldet das Tool „No algorithm produces this hash."
  • Lässt sich der Wert weder als Hex noch als Base64 lesen, erscheint „Not a hex or Base64 hash."

Das Feld versteht mehrere Schreibweisen: Hex in Groß- oder Kleinbuchstaben, auch mit Doppelpunkten (AB:CD:…), Base64 und Base64URL, SRI-Werte mit Präfix (sha256-…, sha384-…, sha512-…) und ganze Zeilen aus sha256sum & Co. im Format hash dateiname — dann zählt nur der Hash vor dem ersten Leerzeichen. Der Vergleich arbeitet unabhängig vom gewählten Ausgabeformat.

Subresource Integrity (SRI)

Unter der Tabelle steht, solange kein HMAC-Schlüssel gesetzt ist, eine SRI-Zeile mit dem Integritätswert der Eingabe, bevorzugt als sha384-… (Base64 des SHA-384-Hashs). Der Copy-Button daneben kopiert das fertige Attribut-Paar:

integrity="sha384-…" crossorigin="anonymous"

Das setzt du in ein <script>- oder <link>-Tag, damit der Browser eine eingebundene Fremd-Ressource nur ausführt, wenn ihr Inhalt exakt passt. Für eine echte Datei nimmst du den Reiter File — dort entsteht die SRI-Zeile genauso.

Datei-Hashing (File)

Im Reiter File berechnest du Prüfsummen für eine ganze Datei — praktisch, um einen Download gegen einen veröffentlichten Wert zu prüfen oder einen SRI-Wert für eine Bibliothek zu bilden.

Algorithmen wählen

Unter der Ablagefläche stehen unter Algorithms for files alle 20 Verfahren als Schaltflächen zum An- und Abwählen („each one costs time on big files" — jedes zusätzliche Verfahren kostet bei großen Dateien Zeit). Vorausgewählt sind MD5, SHA-1, CRC-32, SHA-256, SHA-512, SHA3-256 und BLAKE3. Deine Auswahl merkt sich das Tool für den nächsten Besuch. Ist nichts ausgewählt, meldet es „Select at least one algorithm."

Die Auswahl gilt für den nächsten Hash-Lauf: Wählst du nach dem Hashen ein weiteres Verfahren an, legst du die Datei erneut ab, um auch dessen Wert zu bekommen.

Der Schalter Also compute HMACs with the key from the Text tab berechnet zusätzlich die HMACs mit dem Schlüssel, der im Reiter Text im Feld HMAC key steht (samt dessen Kodierung). Ohne Schlüssel dort bleibt es bei den reinen Hashes.

Datei wählen

Du ziehst eine Datei per Drag & drop in die Ablagefläche („Drag & drop a file here") oder klickst darauf, um den Datei-Dialog zu öffnen („or click to choose — the file stays on your computer"). Das Hashen startet sofort — einen eigenen Start-Button gibt es nicht. Über der Tabelle stehen Dateiname, Größe und, falls bekannt, der MIME-Typ.

Hashen

Das Tool liest die Datei in Stücken (Streaming) und reicht jedes Stück an alle gewählten Verfahren gleichzeitig weiter. Ein festes Größenlimit gibt es nicht: Die Datei wird nie komplett in den Speicher geladen, die Grenze ist nur die Rechenzeit. Während des Laufs zeigt der Fortschrittsbalken den Prozentstand, das Tempo (z. B. MB/s) und die geschätzte Restzeit („about N s left"). Mit Cancel brichst du ab.

Am Ende stehen über der Tabelle Dateiname, Größe und die Dauer („hashed in X s"). Die Tabelle ist genauso aufgebaut wie im Text-Reiter: gruppiert, mit Copy-Button je Zeile, im Format, das du im Reiter Text unter Output gewählt hast. Darunter erscheint ohne HMAC die SRI-Zeile — sha384-…, wenn SHA-384 gewählt ist, sonst der stärkste gewählte Wert aus SHA-256 und SHA-512.

Prüfsumme vergleichen

Ins Feld „Paste the published checksum to verify the download…" fügst du die vom Anbieter veröffentlichte Prüfsumme ein — als Hex, Base64, SRI-Wert oder ganze Zeile aus einer .sha256-Datei. Passt sie, wird die Zeile grün und „Match:" nennt das Verfahren. Passt keine, lautet die Meldung „No algorithm produces this hash — the file differs, or the algorithm is not selected." — entweder ist die Datei eine andere, oder das passende Verfahren war beim Hashen nicht ausgewählt.

Technik dahinter

  • Alle Berechnungen laufen in einem Web Worker, also außerhalb des Haupt-Threads — die Seite bleibt auch bei großen Dateien bedienbar.
  • Die Hash-Funktionen stammen aus @noble/hashes (MIT); CRC-32 ist im Tool selbst implementiert, bcrypt kommt aus bcrypt.js (BSD-3-Clause).
  • Alles passiert lokal im Browser. Die Datei wird zu keinem Zeitpunkt hochgeladen.

Passwort-Hashing (Password hashing)

Der dritte Reiter erzeugt und prüft Passwort-Hashes — absichtlich langsame, gesalzene Verfahren zum Speichern von Passwörtern. Ein Hinweis oben im Reiter erinnert daran, Passwörter nie mit reinem MD5 oder SHA-256 zu speichern, und dass PHPs password_hash() / password_verify() die hier erzeugten bcrypt-Strings ($2y$) und Argon2id-Strings verstehen.

Hash erzeugen (Create a hash)

Unter Algorithm wählst du das Verfahren; die passenden Parameter erscheinen darunter.

bcrypt (vorausgewählt):

  • Cost — der Kostenfaktor, 2n Runden; erlaubt sind 4 bis 15, Standard 12.
  • Prefix — $2y$ (PHP) (Standard) oder $2b$ (current standard). Beide Präfixe bezeichnen dasselbe Verfahren; $2y$ ist die Schreibweise, die PHP selbst erzeugt.
  • bcrypt verarbeitet nur die ersten 72 Byte eines Passworts. Ist dein Passwort länger, warnt das Tool: „bcrypt only uses the first 72 bytes of a password — the rest is ignored."

Argon2id (recommended):

  • Memory (KiB) — das Feld bietet 1.024 bis 262.144 KiB in Schritten von 1.024 an, Standard 19.456 (19 MiB).
  • Iterations — Feldbereich 1 bis 10, Standard 2.
  • Parallelism — Feldbereich 1 bis 4, Standard 1.
  • Die Obergrenzen und die Schrittweite sind nur Vorgaben der Eingabefelder. Durchgesetzt werden lediglich die Untergrenzen (1.024 KiB, 1 Iteration, Parallelität 1); einen größeren Wert, den du von Hand eintippst, rechnet das Tool unverändert.
  • Die Standardwerte entsprechen dem OWASP-Minimum; PHP selbst nutzt standardmäßig 64 MiB und 4 Iterationen, wie die Notiz unter den Feldern sagt.
  • Das Ergebnis ist ein String im PHC-Format, wie ihn auch PHP mit PASSWORD_ARGON2ID erzeugt: $argon2id$v=19$m=…,t=…,p=…$salt$hash (16 Byte Zufalls-Salt, 32 Byte Hash).

PBKDF2-HMAC-SHA256 (Django format):

  • Iterations — das Feld bietet 1.000 bis 5.000.000 in Schritten von 1.000 an, Standard 600.000 (laut Notiz die OWASP-Empfehlung für PBKDF2-HMAC-SHA256). Durchgesetzt wird nur die Untergrenze von 1.000; höhere Werte von Hand rechnet das Tool so, wie du sie eingibst.
  • Das Ergebnis folgt dem Format von Django: pbkdf2_sha256$<Iterationen>$<Salt>$<Base64-Hash>.

Dann gibst du das Passwort ins Feld Password ein (das Augen-Symbol blendet es ein und aus) und klickst Hash password. Während der Berechnung („Hashing… (deliberately slow)") kannst du mit Cancel abbrechen. Danach steht der Hash in einem Feld mit Kopier-Button, und die Info-Zeile nennt die Dauer: „Took X s here — a good cost makes one hash take ~0.2–1 s on your server. Every run uses a new random salt." Jeder Klick erzeugt also einen anderen Hash für dasselbe Passwort — das ist gewollt.

Passwort prüfen (Verify a password)

Rechts fügst du einen gespeicherten Hash in Stored hash ein, gibst das Password ein und klickst Verify. Das Format erkennt das Tool automatisch:

  • bcrypt mit $2a$, $2b$ oder $2y$,
  • Argon2id im PHC-Format ($argon2id$v=19$…),
  • PBKDF2 im Django-Format (pbkdf2_sha256$…).

Das Ergebnis lautet „The password matches this hash." oder „The password does NOT match this hash." Andere Formate — etwa Argon2i, Argon2d oder scrypt — lehnt das Tool mit einer Fehlermeldung ab. Die Prüfung dauert so lange wie das Erzeugen, weil sie den Hash mit den Parametern aus dem String neu berechnet.

Verlauf und Speicherung

In der Fußleiste sitzt der Schalter Remember recent text inputs in this browser. Er ist standardmäßig aus — gehashte Texte sind oft Passwörter, wie der Hinweis daneben sagt.

  • Schaltest du ihn ein, speichert das Tool den Inhalt des Feldes Input, sobald du das Feld verlässt (nicht bei jedem Tastendruck), im localStorage deines Browsers. Es behält die letzten 10 Einträge, ohne führende und abschließende Leerzeichen; Einträge unter zwei Zeichen fallen weg.
  • Gibt es Einträge, erscheint über dem Feld ein Uhr-Symbol (Recent inputs), das sie als Liste zeigt. Ein Klick setzt den Text wieder ein und berechnet neu. Die Eingabe-Kodierung wird nicht mitgespeichert.
  • Forget löscht alle gespeicherten Einträge. Den Schalter auszuschalten blendet die Liste nur aus — gelöscht wird erst mit Forget.
  • Passwörter und Schlüssel werden nie gespeichert, auch nicht mit eingeschaltetem Verlauf. Sonst merkt sich das Tool nur Einstellungen: den Reiter, das Ausgabeformat und die Algorithmen-Auswahl für Dateien.

Betriebsgrenzen — kompakt

  • Datenschutz: Text, Dateien und Passwörter werden ausschließlich im Browser verarbeitet; das Tool sendet nichts an einen Server.
  • Datei-Größe: kein festes Limit (Streaming); begrenzend ist nur die Rechenzeit, die mit jedem gewählten Verfahren steigt.
  • Ausgabe: hex, HEX, Base64 oder Base64URL.
  • Text-Berechnung: live beim Tippen, immer alle 20 Verfahren.
  • HMAC: für alle Verfahren außer SHAKE128/256, BLAKE3 und CRC-32; im Datei-Reiter per Schalter.
  • Passwort-Hashes: bcrypt (Cost fest auf 4 bis 15 begrenzt), Argon2id (Feldbereich bis 256 MiB, 10 Iterationen, Parallelität 4; erzwungen werden nur die Untergrenzen), PBKDF2-HMAC-SHA256 (Feldbereich 1.000 bis 5.000.000 Iterationen; erzwungen wird nur die Untergrenze); Prüfen für bcrypt, Argon2id und PBKDF2 im Django-Format.
  • Verlauf: nur auf Wunsch, max. 10 Texteingaben, nie Passwörter oder Schlüssel.

Für den Einstieg und die Zielgruppen siehe die Übersichtsseite. Konkrete Abläufe stehen in den Beispielen, die Sicherheits-Einordnung in den Tipps & Tricks. Ausprobieren kannst du alles direkt im Tool.