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:
HashHMACSHA-256PrüfsummeSicherheitAnleitung

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

Hash und HMAC beantworten verschiedene Fragen. Der SHA-256 einer Zeichenkette sagt, ob sie noch zu einem veröffentlichten Fingerabdruck passt. Der HMAC-SHA-256 derselben Zeichenkette, berechnet mit einem gemeinsamen Geheimnis, sagt, ob jemand mit diesem Geheimnis sie erzeugt hat. Beides ist weder eine Verschlüsselung noch ein Passwortspeicher. FastMinify trennt die beiden 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. Beide laufen im Browser-Tab über Web Crypto (MD5 ist eine lokale Implementierung, weil Web Crypto es nicht anbietet), und nichts wird hochgeladen. Beide stehen im Kodierungs-Tools-Hub, neben den Base64- und JWT-Werkzeugen. Kodierung schreibt Bytes anders auf, Hashing bildet ihren Fingerabdruck.

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, ohne 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 entgegen und liest sie als UTF-8, ersetzt also kein sha256sum für Binärdateien

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.

Das SHA-256 einer kurzen Fixture mit einem Unit-Test oder einem Dokumentationsbeispiel wie abc prüfen. Ein leeres Feld löscht das Ergebnis, den Digest der leeren Zeichenkette sehen Sie daher in einer REPL und nicht im Werkzeug
Einen gerade bearbeiteten JSON- oder YAML-Body mit dem Digest vergleichen, den Ihnen eine Kollegin oder ein Kollege geschickt hat, 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 Unterschied zwischen Base64, Hash und HMAC zeigen, ohne Node zu installieren
Dem Rechner überlassen, auf dem die Datei oder der Schlüssel liegt

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 und PDFs: sha256sum oder openssl dgst an der Datei, nicht diese Seite
Dateien über 32 MiB oder mit einer Endung außerhalb der Textliste, die die Auswahl ablehnt
Passwortdatenbanken: bcrypt, nicht SHA
Ein JWT, das Sie annehmen oder ablehnen müssen: jwt-verify, nicht ein selbst gebauter HMAC der Claims
Ein Repository, das vielleicht schon ein Signatur-Geheimnis enthält: Secrets scannen, bevor Sie den gerade eingefügten Schlüssel austauschen

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 passt zu einer Prüfsumme, aber nicht zu einem Passwort: Ein Angreifer kann den Digest vorab berechnen, und zwei Nutzer mit demselben Passwort teilen sich denselben Wert. Die Dokumentation der Hash- und HMAC-Seiten weist darauf hin. Passwörter gehören zu bcrypt-hash (oder zu Argon2 auf Ihrem Server). HMAC ist ebenfalls das falsche Werkzeug, denn es authentifiziert eine Nachricht mit einem Geheimnis, das Sie behalten müssen, und streckt kein Passwort.

SHA-256(Passwort) speichern und die Spalte „gehasht“ nennen
HMAC(Passwort, Pepper) statt bcrypt, weil es „einen Schlüssel hat“
Einen Login über den Vergleich des MD5 einer Passphrase freigeben
Glauben, ein längerer Digest (SHA-512) ersetze Salt und Kostenfaktor
Prüfsummen und Webhook-Signaturen hier. Passwörter mit bcrypt, mit einem Kostenfaktor, den der Server tragen kann.
Einen Hash für eine Signatur halten, oder Base64 für einen Hash

Jeder kann den SHA-256 eines öffentlichen Bodys neu berechnen. Der Digest belegt, dass der Body unverändert ist, aber nicht, wer ihn erzeugt hat. Muss ein Webhook, ein Versionshinweis oder ein API-Aufruf authentisch sein, braucht es ein Geheimnis: HMAC oder eine JWT-Signatur, geprüft mit jwt-verify. Die umgekehrte Verwechslung ist nach dem Base64-Kodieren-und-Dekodieren-Guide genauso häufig, denn Base64 ist eine umkehrbare Verpackung. Der 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 einfügen, 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
Integrität ohne Geheimnis → Hash. Integrität mit gemeinsamem Geheimnis → HMAC. Vertraulichkeit → Verschlüsselung, die diese Seiten nicht leisten. Reversible Schreibweise → Base64.
Prüfsumme einer Datei, die nicht die Bytes auf der Platte sind

Der Hash-Generator berechnet Hashes von UTF-8-Text, nicht von einer Rohdatei. Die Dateiauswahl akzeptiert nur Textendungen (txt, md, json, csv, html, xml, yml, yaml) bis zur Browsergrenze von 32 MiB, und die Datei wird vor dem Hashen als Text gelesen. Der SHA-256 eines Anbieters für ein .tar.gz, ein Bild oder ein PDF passt daher nicht, und diese Typen stehen nicht in der Auswahl. Selbst eine Textdatei kann von sha256sum abweichen, wenn sich die Zeilenenden ändern. Der SHA-256 von abc ist der Vektor oben. Der 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
echo abc | sha256sum nutzen (echo hängt einen Zeilenumbruch an) und dem Browser die Schuld geben
Eine Binärdatei in .txt umbenennen, damit die Auswahl sie nimmt, obwohl die Textdecodierung ihre Bytes verändert
Die Seite ist das richtige Werkzeug für ein Snippet, einen JSON-Body oder eine Text-Fixture. Binärartefakte bleiben bei sha256sum oder openssl dgst.
Eine andere Zeichenkette signieren als der Webhook

GitHubs X-Hub-Signature-256 ist sha256= gefolgt vom HMAC-SHA-256 des rohen Bodys, mit dem 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 sha256=f7bc… in Erwarteter Digest einfügen
Das JSON vor dem Signieren neu 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, obwohl es diese Algorithmen nur auf der Hash-Seite gibt
Die exakte Eingabe des Anbieters nachbauen. Wenn die Signatur dann noch fehlt, liegt der Fehler in den Bytes, nicht in einem zweiten Algorithmus.

Welcher Algorithmus, welche Schreibweise, welches Werkzeug

Hash, HMAC, bcrypt und JWT sind 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. Eine leere Nachricht oder ein leeres Geheimnis führt zu einem 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 der Form header.payload.signature gegen einen Schlüssel oder ein JWKS. HMAC-SHA-256 ist die Primitive hinter HS256, doch signiert werden die beiden mit einem Punkt verbundenen Base64URL-Teile, nicht die JSON-Claims. Für Tokens nutzen Sie jwt-verify, für eine unverarbeitete Nachricht HMAC.
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 als Hex: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad (64 Hex-Zeichen, 32 Bytes)
Dieselbe Eingabe, MD5 als Hex: 900150983cd24fb0d6963f7d28e17f72 (32 Hex-Zeichen). Nur für alte Prüfsummen; bauen Sie kein neues Protokoll auf MD5 oder SHA-1 auf
HMAC-SHA-256 mit dem vierstelligen Schlüssel key und der Nachricht The quick brown fox jumps over the lazy dog, als Hex: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
Derselbe HMAC als Base64 mit Padding lautet 97yD9DBThCSxMpjmqm+xQ+9NWaFJRhdZl0edvC0aPNg=. Base64URL streicht das Padding und ersetzt das Pluszeichen und den Schrägstrich durch Bindestrich und Unterstrich, das ergibt 97yD9DBThCSxMpjmqm-xQ-9NWaFJRhdZl0edvC0aPNg
Längen, die Sie zählen, bevor Sie einem eingefügten Wert trauen

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

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 und SHA-512 ergeben 48 und 64 Bytes, also 96 und 128 Hex-Zeichen. 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 wählen Sie eine Textdatei aus. Wählen Sie Hex, Base64 oder Base64URL. Schalten Sie die Option Hex Großbuchstaben nur ein, wenn der Referenz-Digest in Großbuchstaben steht, denn bei Base64 ändert sie nichts. Alle fünf Algorithmen aktualisieren sich gemeinsam. Fügen Sie den erwarteten Digest ein, um Treffer zu markieren, oder laden Sie das Beispiel, wenn Sie nur den Ablauf sehen wollen. Das Feld muss mindestens ein Zeichen enthalten, das kein Leerzeichen ist: Ein leeres Feld löscht die Karten, statt den bekannten SHA-256 der leeren Zeichenkette anzuzeigen.

1

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

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

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 Sie noch entfernen müssen.

Mit HMAC signieren

Öffnen Sie den HMAC-Generator. Es gibt keine Dateiauswahl, fügen Sie also Nachricht und Geheimnis ein. Lassen Sie SHA-256 eingestellt, außer der Anbieter nennt SHA-384 oder SHA-512. Stellen Sie die Schlüsselkodierung auf UTF-8 für ein Geheimnis wie eine Passphrase, auf Hex für einen Hex-Schlüssel (optionales 0x, gerade Länge) oder auf Base64 beziehungsweise Base64URL, wenn der Schlüssel so gespeichert wurde. UTF-8 auf einem Hex-Geheimnis signiert die Zeichen 0-9a-f und nicht die Schlüsselbytes, der Digest passt dann nicht, und die Ursache ist nicht offensichtlich. Der erwartete Digest folgt denselben Vergleichsregeln wie die Hash-Seite.

Algorithmen: HMAC-SHA-256 (Standard), SHA-384, SHA-512, alle über Web Crypto
Nachricht und Geheimnis sind Pflicht; Werte nur aus Leerzeichen 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, für Tokens gibt es jwt-encode / jwt-verify

Dieselben Bytes in Node und openssl

Node crypto mit UTF-8, ohne zusätzlichen 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 mit printf, nicht echo

echo hängt einen Zeilenumbruch an, der Digest gilt also für andere Bytes. printf nicht. Für eine Datei auf dem Datenträger setzen Sie -binary nur, 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, nichts wird an einen Server gesendet, fünf Hash-Algorithmen oder drei HMAC-Algorithmen, Hex / Base64 / Base64URL und eine Markierung des erwarteten Digests. Die Grenzen: nur Text und UTF-8, ein Deckel von 32 MiB 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.

Zusammenfassung

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. Es verarbeitet MD5 bis SHA-512 für UTF-8-Text (und Textdateien bis 32 MiB) sowie HMAC-SHA-256, SHA-384 oder SHA-512 mit einem 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 im Spiel ist; ein Hash allein authentifiziert 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: