Hash- und HMAC-Generator: MD5, SHA-256, SHA-512 online

Hash- und HMAC-Generator: MD5, SHA-256, SHA-512 online

MD5- oder SHA-Digest berechnen oder eine Nachricht per HMAC signieren — im Browser. Hex, Base64 oder Base64URL, lokale Text-Prüfsummen und Webhooks.

21.09.2026
10 Min. Lektüre
Teilen Sie diesen Artikel:
Hash
HMAC
SHA-256
Prüfsumme
Sicherheit
Anleitung

Ein Digest belegt die Bytes; HMAC belegt, wer sie gesendet hat

Hash und HMAC beantworten verschiedene Fragen. SHA-256 einer Zeichenkette sagt, ob sie noch zu einem veröffentlichten Fingerabdruck passt. HMAC-SHA-256 derselben Zeichenkette plus ein gemeinsames Geheimnis sagt, ob jemand mit diesem Geheimnis sie erzeugt hat. Beides ist keine Verschlüsselung und kein Passwortspeicher. FastMinify trennt die Aufgaben: Der Hash-Generator online berechnet MD5, SHA-1, SHA-256, SHA-384 und SHA-512 aus UTF-8-Text, der HMAC-Generator signiert eine Nachricht mit HMAC-SHA-256, SHA-384 oder SHA-512. Beides läuft im Tab über Web Crypto (MD5 ist eine lokale Implementierung, weil Web Crypto es nicht anbietet). Nichts wird hochgeladen. Beide stehen im Kodierungs-Tools-Hub, neben Base64 und JWT-Helfern — Kodierung schreibt Bytes, Hashen fingerabdruckt sie.

Fünf Digests gleichzeitig auf der Hash-Seite: SHA-256, SHA-384, SHA-512, SHA-1, MD5
HMAC nur mit SHA-256, SHA-384 und SHA-512 — kein MD5- oder SHA-1-Modus mit Schlüssel
Ausgabe: Hex klein oder groß, Base64 mit Padding, oder Base64URL ohne Padding
Erwarteten Digest einfügen: passende Algorithmen werden markiert; Hex-Großschreibung, Leerzeichen und Base64URL-Padding werden ignoriert
HMAC-Schlüsselkodierung: UTF-8-Text (Standard), Hex-Bytes oder Base64- / Base64URL-Bytes
Die Hash-Seite nimmt eine Textdatei (txt, md, json, csv, html, xml, yml, yaml) bis 32 MiB, gelesen als UTF-8 — kein binäres sha256sum

Wann der Browser der richtige Ort zum Hashen ist

Passende Fälle

Eine Zeichenkette, die Sie einfügen können, ein Geheimnis, das Sie in den eigenen Browser tippen, ein Digest, den Sie schon haben.

SHA-256 einer kurzen Fixture gegen einen Unit-Test oder ein Doku-Beispiel prüfen (abc — die Seite löscht das Ergebnis, wenn das Feld leer oder nur Whitespace ist; den Digest der leeren Zeichenkette sehen Sie in einer REPL, nicht im Tool)
Einen gerade bearbeiteten JSON- oder YAML-Body mit dem Digest der Kollegin vergleichen, nachdem LF oder CRLF festliegt
Einen GitHub-artigen HMAC des rohen Bodys nachbauen und das Hex ohne das Präfix sha256= vergleichen
Sehen, zu welchem Algorithmus ein unbekanntes Hex gehört: in Erwarteter Digest einfügen und die fünf Karten aufleuchten lassen
Den Abstand zwischen Base64, Hash und HMAC zeigen, ohne Node zu installieren
Der Maschine überlassen, die Datei oder Schlüssel hält

Wenn die Bytes ein Binärartefakt sind, oder das Geheimnis nicht in einem Browser auf einem geteilten Rechner auftauchen darf, bleiben Sie in der Shell oder in der CI.

Release-Archive, Container, Bilder, PDFs — sha256sum oder openssl dgst an der Datei, nicht diese Seite
Dateien über 32 MiB oder Endungen außerhalb der Textliste — die Auswahl lehnt sie ab
Passwortdatenbanken — <a href="/de/bcrypt-hash" class="text-primary hover:underline">bcrypt</a>, nicht SHA
Ein JWT, das Sie annehmen oder ablehnen müssen — <a href="/de/jwt-verify" class="text-primary hover:underline">jwt-verify</a>, nicht ein von Hand gebauter HMAC der Claims
Ein Repo, das vielleicht schon ein Signaturgeheimnis enthält — <a href="/de/scan-secrets" class="text-primary hover:underline">Secrets scannen</a>, bevor Sie den gerade eingefügten Schlüssel rotieren

Hash-Fehler, die wie ein Treffer aussehen

SHA oder MD5 als Passwort-Hash

Ein schlichter Digest ist schnell, ungesalzen und für dieselbe Eingabe identisch. Das will man bei einer Prüfsumme. Das will man nicht bei einem Passwort: Ein Angreifer berechnet den Digest vor, und zwei Nutzer mit demselben Passwort teilen eine Zeile. Die Doku der Hash- und HMAC-Seiten sagt das. Passwörter gehören auf bcrypt-hash (oder Argon2 auf dem Server). HMAC ist ebenfalls das falsche Werkzeug: Es authentisiert eine Nachricht mit einem Geheimnis, das Sie behalten müssen, es streckt kein Passwort.

SHA-256(Passwort) speichern und die Spalte „gehasht“ nennen
HMAC(Passwort, Pepper) statt bcrypt, weil es „einen Schlüssel hat“
MD5 einer Passphrase vergleichen, um einen Login zu entscheiden
Glauben, ein längerer Digest (SHA-512) ersetze Salt und Kostenfaktor
Einen Hash für eine Signatur halten, oder Base64 für einen Hash

Jeder kann SHA-256 eines öffentlichen Bodys neu berechnen. Der Digest belegt, dass der Body sich nicht geändert hat; er belegt nicht, wer ihn erzeugt hat. Wenn ein Webhook, ein Release-Hinweis oder ein API-Aufruf authentisch sein muss, braucht es ein Geheimnis: HMAC, oder eine JWT-Signatur über jwt-verify. Die umgekehrte Verwechslung ist nach dem Base64-Kodieren-und-Dekodieren-Guide genauso häufig: Base64 ist reversible Verpackung. SHA-256 von abc ist ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Aus diesem Hex wird nicht wieder abc.

Einen SHA-256 neben einen JSON-Body stellen und den Body „signiert“ nennen
Einen Digest im Base64-Tool dekodieren und den Originaltext erwarten
Ein JWT in den Hash-Generator kleben, um zu sehen, ob es gültig ist
Einen API-Schlüssel hashen und ihn danach nicht mehr wiederherstellen können, obwohl der Server ihn braucht
Prüfsumme einer Datei, die nicht die Bytes auf der Platte sind

Der Hash-Generator hasht UTF-8-Text, keine Rohdatei. Der Upload akzeptiert nur Textendungen — txt, md, json, csv, html, xml, yml, yaml — bis zur Client-Grenze von 32 MiB, und die Datei wird vor dem Hashen als Text gelesen. Ein Anbieter-SHA-256 einer .tar.gz, eines Bildes oder eines PDF passt nicht, und diese Typen sind nicht in der Auswahl. Selbst eine Textdatei kann von sha256sum abweichen, wenn sich die Zeilenenden ändern. SHA-256 von abc ist der Vektor oben. SHA-256 von abc plus einem LF ist edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb. Dieselben Buchstaben, andere Bytes.

Ein Release-Archiv ablegen und die Anbieter-Prüfsumme erwarten
Eine Windows-CRLF-Datei mit einem Linux-LF-Digest vergleichen
<code>echo abc | sha256sum</code> nutzen (echo hängt einen Zeilenumbruch an) und dem Browser die Schuld geben
Eine Binärdatei in .txt umbenennen, damit die Auswahl sie nimmt — die Bytes sind nicht mehr die der Datei
Eine andere Zeichenkette signieren als der Webhook

GitHubs X-Hub-Signature-256 ist sha256= plus HMAC-SHA-256 des rohen Bodys, Geheimnis als UTF-8. Stripe signiert timestamp.payload, nicht das JSON allein. Die HMAC-Seite baut diese Zeichenketten nicht und entfernt kein sha256=-Präfix. Fügen Sie die exakte Nachricht, die exakten Schlüsselbytes und nur den Digest ein. Der Vergleich ignoriert Hex-Großschreibung und Leerzeichen sowie nachgestelltes = bei Base64URL. Ein Präfix ignoriert er nicht.

Den ganzen Header <code>sha256=f7bc…</code> in Erwarteter Digest einfügen
Das JSON vor dem Signieren hübsch formatieren — Leerzeichen ändern den HMAC
Schlüsselkodierung auf UTF-8 lassen, obwohl das Geheimnis ein Hex- oder Base64-Schlüssel ist
HMAC-MD5 oder HMAC-SHA-1 verlangen — diese Algorithmen gibt es nur auf der Hash-Seite

Welcher Algorithmus, welche Schreibweise, welches Werkzeug

Hash, HMAC, bcrypt, JWT — vier verschiedene Schlösser

Alle erzeugen undurchsichtige Zeichenketten. Sie ersetzen einander nicht.

Hash-Generator: kein Geheimnis. MD5, SHA-1, SHA-256, SHA-384, SHA-512 von UTF-8-Text. Alle fünf aktualisieren sich zusammen; ein eingefügter Digest markiert die passenden Algorithmen.
HMAC-Generator: gemeinsames Geheimnis Pflicht. HMAC-SHA-256 (Standard), SHA-384 oder SHA-512. Leere Nachricht oder leeres Geheimnis ist ein Fehler. Kein Datei-Upload.
bcrypt-hash: Passwortspeicher. Absichtlich langsam. Eine bcrypt-Zeichenkette auf der Hash-Seite ergibt keinen Treffer.
jwt-verify: prüft ein kompaktes JWT (header.payload.signature) gegen einen Schlüssel oder ein JWKS. HMAC-SHA-256 ist die Primitive hinter HS256, aber die signierte Eingabe ist base64url(header).base64url(payload), nicht die JSON-Claims. jwt-verify für Tokens; HMAC für eine rohe Nachricht.
Hex, Base64, Base64URL

Die Digest-Bytes bleiben gleich. Die Schreibweise nicht. Hex ist, was sha256sum und die meisten Webhook-Dokus drucken. Base64 mit Padding ist, was manche APIs liefern. Base64URL ohne Padding ist die kompakte Form (kein +, kein /, kein nachgestelltes =). Großschreibung gilt nur für Hex.

NIST-Vektor, Eingabe abc, SHA-256 hex: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad — 64 Hex-Zeichen, 32 Bytes
Dieselbe Eingabe, MD5 hex: 900150983cd24fb0d6963f7d28e17f72 — 32 Hex-Zeichen. Nur Alt-Prüfsummen; starten Sie kein neues Protokoll auf MD5 oder SHA-1
HMAC-SHA-256, Schlüssel die vier Zeichen key, Nachricht The quick brown fox jumps over the lazy dog, hex: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
Derselbe HMAC als Base64 mit Padding: 97yD9DBThCSxMpjmqm+xQ+9NWaFJRhdZl0edvC0aPNg= — Base64URL streicht das Padding und tauscht + und /: 97yD9DBThCSxMpjmqm-xQ-9NWaFJRhdZl0edvC0aPNg
Längen, die Sie zählen, bevor Sie einem Paste trauen

Ein abgeschnittener Digest ist eine misslungene Kopie, kein anderer Algorithmus. Zählen Sie die Zeichen, nachdem Leerzeichen weg sind.

MD5: 16 Bytes → 32 Hex, oder 24 Base64-Zeichen mit Padding
SHA-1: 20 Bytes → 40 Hex. Kollisionen gibt es; nur für Alt-Manifeste behalten
SHA-256: 32 Bytes → 64 Hex, 44 Base64 mit einem =, 43 Base64URL ohne Padding
SHA-384: 48 Bytes → 96 Hex. SHA-512: 64 Bytes → 128 Hex. Die HMAC-Ausgabelänge folgt dem gewählten Hash

Einen Digest berechnen, dann eine Nachricht signieren

Eine Zeichenkette oder Textdatei hashen

Öffnen Sie den Hash-Generator. Fügen Sie den Text ein oder laden Sie eine Textdatei. Wählen Sie Hex, Base64 oder Base64URL. Großschreibung nur einschalten, wenn der Referenz-Digest in Versalien steht — bei Base64 ändert sie nichts. Alle fünf Algorithmen aktualisieren sich zusammen. Fügen Sie den erwarteten Digest ein, um Treffer zu markieren. Laden Sie das Beispiel, wenn Sie nur die Pipeline sehen wollen. Das Feld braucht Text, der nicht nur Whitespace ist; ein leeres Feld löscht die Karten, statt den bekannten SHA-256 der leeren Zeichenkette zu zeigen.

1

Schritt 1 — Die exakten Bytes als Text einfügen

Einigen Sie sich auf Zeilenenden. Ein abschließendes LF gehört zur Eingabe. Formatieren Sie JSON nicht um, wenn die andere Seite die kompakte Form gehasht hat.

2

Schritt 2 — Die Ausgabeschreibweise angleichen

Hex für Prüfsummen und CLI-Tools. Base64 mit Padding, wenn die API + / und = zeigt. Base64URL ohne Padding, wenn der Digest in einem Token oder einer URL steht.

3

Schritt 3 — Den erwarteten Digest einfügen

Der Vergleich ignoriert Hex-Großschreibung und Leerzeichen sowie Base64URL-Padding. Ein Treffer markiert den Algorithmus. Keine Markierung: andere Bytes, andere Schreibweise, oder ein Präfix, das noch weg muss.

Mit HMAC signieren

Öffnen Sie den HMAC-Generator. Es gibt keinen Datei-Upload: Nachricht und Geheimnis einfügen. SHA-256 lassen, außer der Anbieter sagt SHA-384 oder SHA-512. Schlüsselkodierung auf UTF-8 für ein Passphrasen-Geheimnis, Hex für einen Hex-Schlüssel (optionales 0x, gerade Länge) oder Base64, wenn der Schlüssel so gespeichert wurde. UTF-8 auf einem Hex-Geheimnis signiert die Zeichen 0-9a-f, nicht die Schlüsselbytes — der Digest passt nicht, und der Fehler ist nicht offensichtlich. Erwarteter Digest folgt denselben Regeln wie die Hash-Seite.

Algorithmen: HMAC-SHA-256 (Standard), SHA-384, SHA-512 — nur Web Crypto
Nachricht und Geheimnis sind Pflicht; reine Whitespace-Werte werden abgelehnt
Ausgabe: Hex, Base64 mit Padding, Base64URL ohne Padding; Großschreibung nur für Hex
Das Geheimnis bleibt im Tab. Schließen Sie es danach; die Seite ist kein Tresor
Die signierte Eingabe eines HS256-JWT ist nicht das Claims-Objekt — jwt-encode / jwt-verify für Tokens

Dieselben Bytes in Node und openssl

Node crypto — UTF-8, ohne extra Zeilenumbruch

createHash und createHmac hashen die Zeichenkette, die Sie übergeben. Sie hängen keinen Zeilenumbruch an. Das entspricht den Browser-Tools.

Einfaches Beispiel

const crypto = require('node:crypto') const sha256 = crypto.createHash('sha256').update('abc').digest('hex') // ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad const hmac = crypto.createHmac('sha256', 'key') .update('The quick brown fox jumps over the lazy dog') .digest('hex') // f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
openssl — printf, nicht echo

echo hängt einen Zeilenumbruch an, der Digest gilt also für andere Bytes. printf nicht. Für eine Datei auf der Platte -binary nur setzen, wenn Sie die rohen Digest-Bytes wollen; Hex ist die Textform.

Einfaches Beispiel

printf 'abc' | openssl dgst -sha256 # ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad printf 'The quick brown fox jumps over the lazy dog' | openssl dgst -sha256 -hmac key # f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 # Binärartefakt — nicht das Browser-Tool openssl dgst -sha256 release.tar.gz
FastMinify hash-generator / hmac-generator

Keine Installation, kein Upload, fünf Hash-Algorithmen oder drei HMAC-Algorithmen, Hex / Base64 / Base64URL und eine Markierung des erwarteten Digests. Grenze: nur Text und UTF-8, 32-MiB-Deckel für Textdateien auf der Hash-Seite, keine binäre Prüfsumme, kein MD5-HMAC, kein Passwort-Stretching, kein JWT-Zusammenbau. Nutzen Sie die Seiten, um ein Snippet zu prüfen oder einen Webhook-Digest nachzubauen. openssl bleibt am Release-Artefakt, bcrypt am Passwort.

Fazit

Hashen Sie den Text, wenn Sie wissen müssen, dass er sich nicht geändert hat. Nehmen Sie HMAC, wenn ein gemeinsames Geheimnis belegen muss, wer ihn erzeugt hat. FastMinify macht beides im Browser: MD5 bis SHA-512 für UTF-8-Text (und Textdateien bis 32 MiB), HMAC-SHA-256/384/512 mit UTF-8-, Hex- oder Base64-Schlüssel, geschrieben als Hex, Base64 oder Base64URL ohne Padding. Es prüft kein Archiv, speichert kein Passwort und verifiziert kein JWT. Das bleibt bei openssl, bcrypt und jwt-verify. Starten Sie im Kodierungs-Tools-Hub, solange die Zeichenkette noch Text ist.

SHA-256 für neue Prüfsummen; MD5 und SHA-1 nur, wenn ein Alt-Manifest sie verlangt
HMAC, sobald ein gemeinsames Geheimnis da ist; ein nackter Hash authentisiert den Absender nicht
Zeilenenden und Schreibweise (Hex, Base64, Base64URL) angleichen, bevor Sie einen Digest für falsch erklären
Im Browser nur Textdateien — Binärartefakte bleiben bei openssl oder sha256sum
Passwörter zu bcrypt; Tokens zu jwt-verify
Teilen Sie diesen Artikel
Teilen Sie diesen Artikel: