HMAC-Generator

Erzeugen Sie einen HMAC (Hash-based Message Authentication Code) aus Text und einem geheimen Schlüssel. Der Online-Rechner unterstützt HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-384 und HMAC-SHA-512, verarbeitet Schlüssel als Text, Hex oder Base64 und gibt den Tag als kleingeschriebene Hex-Zeichenfolge aus. Die Berechnung erfolgt lokal im Browser.

Geheimer Schlüssel
Eingabe
0 Zeichen · 0 Bytes
Ausprobieren:
Hash
✓ Verarbeitung erfolgt lokal im Browser ✓ Eingaben werden nicht an den Server gesendet
Beispiele
Leere Nachricht
Schlüssel: geheimnis Algorithmus: hmac-sha-256 Schlüsselformat: text
Eingabe (leer)
Ausgabe c71c8f16b9013020a31fa06567e1030543aaeea63df411918eb5887a36720e25

Auch eine leere Nachricht ist gültig. HMAC-SHA256 erzeugt mit dem Schlüssel „geheimnis“ einen 64-stelligen Hex-Tag.

Textschlüssel
Schlüssel: geheimnis Algorithmus: hmac-sha-256 Schlüsselformat: text
Eingabe Hallo Welt!
Ausgabe 29a35ef1c32e04d79f3f261ba50415701fc891974bad7804bc8e9ee74f3a6aaa

HMAC-SHA256 für „Hallo Welt!“ mit dem UTF-8-Textschlüssel „geheimnis“.

Andere Nachricht und anderer Schlüssel
Schlüssel: schluessel Algorithmus: hmac-sha-256 Schlüsselformat: text
Eingabe prüfung
Ausgabe 2cba702ae8128263caf49d782da5b7bf4edf8ddad9efb70f291680569ce7a1fe

Schon eine Änderung der Nachricht oder des Schlüssels erzeugt einen völlig anderen HMAC-SHA256-Tag.

HMAC-SHA256-Testvektor aus RFC 4231
Schlüssel: 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b Algorithmus: hmac-sha-256 Schlüsselformat: hex
Eingabe Hi There
Ausgabe b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7

RFC 4231 Testfall 1 verwendet einen 20-Byte-Schlüssel in Hex und dient zur Prüfung von HMAC-SHA256-Implementierungen.

Was ist HMAC?

HMAC (Hash-based Message Authentication Code) kombiniert eine kryptografische Hashfunktion mit einem geheimen Schlüssel. Der in RFC 2104 definierte Algorithmus erzeugt aus einer Nachricht beliebiger Länge einen Authentifizierungstag fester Länge. HMAC-SHA256 ist die häufigste moderne Variante; HMAC-SHA384 und HMAC-SHA512 liefern längere Tags, während HMAC-SHA1 noch in älteren Protokollen vorkommt.

Ein Empfänger mit demselben Schlüssel berechnet den HMAC erneut und vergleicht beide Tags. Eine Übereinstimmung belegt, dass die Nachricht nicht verändert wurde und von einer Partei mit Kenntnis des gemeinsamen Schlüssels stammt. HMAC ist ein symmetrischer Nachrichtenauthentifizierungscode, keine Verschlüsselung und keine digitale Signatur mit öffentlichem Schlüssel.

So funktioniert HMAC

Vereinfacht berechnet HMAC H((K′ ⊕ opad) || H((K′ ⊕ ipad) || Nachricht)). Der Schlüssel wird an die Blockgröße der Hashfunktion angepasst und mit zwei Konstanten für den inneren und äußeren Hash kombiniert. Dadurch wird das Length-Extension-Problem naiver Konstruktionen wie hash(Schlüssel || Nachricht) vermieden.

HMAC-SHA1 liefert 20 Byte (40 Hex-Zeichen), HMAC-SHA256 32 Byte (64), HMAC-SHA384 48 Byte (96) und HMAC-SHA512 64 Byte (128). Der Generator zeigt den vollständigen, nicht gekürzten Tag in kleingeschriebenem Hex an.

HMAC-Generator verwenden
  1. Geben Sie die genaue Nachricht ein.
  2. Wählen Sie HMAC-SHA256, HMAC-SHA1, HMAC-SHA384 oder HMAC-SHA512.
  3. Wählen Sie das Schlüsselformat Text, Hex oder Base64.
  4. Geben Sie den geheimen Schlüssel ein und kopieren Sie das Hex-Ergebnis.

Die Nachricht wird immer als UTF-8 codiert. Im Textmodus gilt das auch für den Schlüssel; Hex und Base64 werden zuerst in Bytes decodiert. Leerzeichen, Zeilenumbrüche, Groß-/Kleinschreibung, Unicode, Algorithmus und Schlüsselformat beeinflussen das Ergebnis.

HMAC für APIs, Webhooks und JWTs

HMAC authentifiziert häufig API-Anfragen, Webhook-Nutzlasten, Sitzungsdaten und Protokollnachrichten. Zur Prüfung wird der Tag über exakt dieselben Bytes mit demselben Geheimnis neu berechnet und zeitkonstant verglichen. Zeitstempel oder Nonces können zusätzlich Replay-Angriffe verhindern.

Beachten Sie immer die jeweilige Spezifikation: APIs verlangen oft eine kanonische Anfrage, Webhooks können den unveränderten HTTP-Body signieren und JWT HS256 verwendet Base64URL statt Hex. Dieses Werkzeug berechnet den HMAC des eingegebenen Textes; es erstellt keine anbieterspezifischen Zeichenfolgen, wandelt nicht in Base64URL um und prüft keinen vorhandenen Tag automatisch.

FAQ

HMAC eignet sich, wenn zwei Parteien ein Geheimnis teilen und absichtliche Änderungen oder einen Absender mit Kenntnis dieses Geheimnisses erkennen müssen. Einen normalen SHA-256-Hash kann dagegen jeder nach einer Änderung neu berechnen. Für öffentliche Prüfung ohne gemeinsames Geheimnis ist eine digitale Signatur erforderlich.

Für HMAC-SHA256 ist ein zufälliger Schlüssel mit 32 Byte eine gute Vorgabe. Erzeugen Sie ihn kryptografisch sicher und speichern Sie ihn geschützt, etwa in einem Secret Manager. Vermeiden Sie Passwörter, merkbare Phrasen, wiederverwendete Geheimnisse und Schlüssel im Clientcode.

HMAC-Schlüssel sind Bytes, werden in Konfigurationen aber oft als Hex oder Base64 gespeichert. Text wird als UTF-8 codiert; Hex und Base64 werden in die ursprünglichen Bytes decodiert. „616263“, „YWJj“ und „abc“ stehen nur mit dem jeweils passenden Format für dieselben Bytes.

Die HMAC-Berechnung läuft lokal über die Web Crypto API. Nachricht und Schlüssel werden nicht zur Berechnung an den Server übertragen. Bei erlaubter Einstellungsspeicherung kann das Schlüsselfeld im lokalen Browserspeicher verbleiben; löschen Sie auf gemeinsam genutzten Geräten Feld und Websitedaten.

Verwenden Sie den vom Protokoll vorgeschriebenen Algorithmus. HMAC-SHA256 ist eine verbreitete Wahl für neue Integrationen; SHA384 und SHA512 sind sinnvoll, wenn die Spezifikation sie verlangt. SHA1 sollte nur aus Kompatibilitätsgründen genutzt werden.

Nein. HMAC ist eine Einwegfunktion. Zur Prüfung benötigt man die ursprüngliche Nachricht und denselben geheimen Schlüssel, berechnet den Tag erneut und vergleicht ihn mit dem erwarteten Wert.

Wählen Sie denselben Algorithmus und dasselbe Schlüsselformat, geben Sie Nachricht und Schlüssel exakt ein und vergleichen Sie die Tags. Verwenden Sie im Anwendungscode einen zeitkonstanten Bytevergleich. Dieser Rechner besitzt kein separates automatisches Prüffeld.

Prüfen Sie Algorithmus, Schlüsselformat und -bytes, Zeichenkodierung, Groß-/Kleinschreibung, Leerzeichen, Zeilenumbrüche, JSON-Serialisierung und Unicode-Normalisierung. Bei APIs und Webhooks sind außerdem der exakt signierte Body beziehungsweise die kanonische Zeichenfolge und das Ausgabeformat wichtig.

HS256 verwendet HMAC-SHA256, ein JWT signiert jedoch den Base64URL-codierten Header und Payload und codiert auch die Signatur als Base64URL ohne Padding. Dieses Werkzeug liefert Hex und erstellt daher kein vollständiges JWT.
Verwandte Tools