So verwenden Sie es
- Tippen Sie die Daten in Nachricht ein. Für binäre Daten wählen Sie unter Kodierung der Nachricht Hexadezimal oder Base64.
- Tippen Sie den geheimen Schlüssel in Schlüssel ein und wählen Sie unter Kodierung des Schlüssels, wie er geschrieben ist.
- Lesen Sie die vier Zeilen unter HMAC-Werte ab. Kopieren Sie den Wert, den Sie brauchen, oder vergleichen Sie ihn mit dem Wert Ihres Systems.
- Weichen die Werte von einem anderen System ab, prüfen Sie zuerst die Bytes: Ein anderes Zeilenende oder eine andere Kodierung ergibt einen anderen HMAC.
Was ein HMAC ist
Ein HMAC (RFC 2104) ist ein Nachrichtenauthentisierungscode: ein kurzer Wert, den nur erzeugen kann, wer den geheimen Schlüssel kennt. Er wird aus einer gewöhnlichen Hashfunktion H gebildet, die zweimal auf die Nachricht und den Schlüssel angewendet wird. Dieselbe Hashfunktion kann daher für die vier Zeilen der Tabelle verwendet werden. Weil der Schlüssel nötig ist, zeigt ein passender HMAC, dass die Nachricht nicht verändert wurde und von einem Inhaber des Schlüssels stammt.
Ein HMAC verbirgt die Nachricht nicht. Jeder, der die Nachricht hat, kann sie lesen. Der HMAC erlaubt nur, sie zu prüfen.
HMAC(K, m) = H((K XOR opad) || H((K XOR ipad) || m))
ipad = das Byte 0x36, B-mal wiederholt
opad = das Byte 0x5C, B-mal wiederholt
B = die Blockgröße von H: 64 Bytes bei SHA-1 und SHA-256, 128 Bytes bei SHA-384 und SHA-512
Welcher Hash und welcher Schlüssel
HMAC-SHA-256 ist die übliche Wahl und die, die viele Webhooks und Schnittstellen verwenden. HMAC-SHA-512 ist dieselbe Konstruktion mit einer längeren Ausgabe. HMAC-SHA-1 kommt noch in älteren Systemen vor und ist für neue Entwürfe keine Wahl mehr.
Der Schlüssel sollte zufällig und mindestens so lang sein wie die Hash-Ausgabe. Ein als Wort oder kurze Phrase eingegebener Schlüssel ist leicht zu erraten, und ein erratener Schlüssel macht den HMAC wertlos.
Hexadezimal und Base64
Beide Formen zeigen dieselben Bytes. Hexadezimal schreibt jedes Byte als zwei Ziffern, daher hat SHA-256 64 Ziffern. Base64 schreibt drei Bytes als vier Zeichen, daher hat SHA-256 44 Zeichen, das letzte davon ein = zum Auffüllen (RFC 4648).
- HMAC-SHA-1: 40 hexadezimale Ziffern, 28 Base64-Zeichen
- HMAC-SHA-256: 64 hexadezimale Ziffern, 44 Base64-Zeichen
- HMAC-SHA-384: 96 hexadezimale Ziffern, 64 Base64-Zeichen
- HMAC-SHA-512: 128 hexadezimale Ziffern, 88 Base64-Zeichen
Rechenbeispiel: RFC 4231, Testfall 2
Der Schlüssel Jefe und die Nachricht what do ya want for nothing? sind der zweite Testfall von RFC 4231 für SHA-256, SHA-384 und SHA-512 sowie von RFC 2202 für SHA-1. Die Tabelle unten zeigt, was die Seite dafür ausgibt. Ihr HMAC-SHA-256-Wert ist der, den der RFC angibt: 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843.
| Algorithmus | Hexadezimal | Base64 |
|---|---|---|
| HMAC-SHA-1 | effcdf6ae5eb2fa2d27416d5f184df9c259a7c79 | 7/zfauXrL6LSdBbV8YTfnCWafHk= |
| HMAC-SHA-256 | 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 | W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM= |
| HMAC-SHA-384 | af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649 | r0XS43ZIQDFhf3jStYprG5x+9GT1oBtH5C7Dc2MiRF6OIkDKXmnix4syOez6shZJ |
| HMAC-SHA-512 | 164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737 | Fkt6e/z4GeLjlfvnO1bgo4e9ZCIugx/WECcM1+olBVSXWL91wFqZSm0DT2X48Ob9yuqxo01Ka0tjbgcKOLznNw== |
Häufig gestellte Fragen
Ist ein HMAC dasselbe wie das Verschlüsseln der Nachricht?
Nein. Ein HMAC verbirgt die Nachricht nicht, daher kann sie jeder lesen. Er zeigt, dass die Nachricht nicht verändert wurde und dass der Absender den Schlüssel kennt. Für Geheimhaltung brauchen Sie eine Verschlüsselung.
Was ist der Unterschied zwischen einem Hash und einem HMAC?
Ein Hash hängt nur von der Nachricht ab, daher kann jeder ihn berechnen. Ein HMAC braucht außerdem den geheimen Schlüssel, daher kann ihn nur erstellen oder prüfen, wer den Schlüssel hat. Für reine Hashwerte nutzen Sie den Hash-Rechner.
Warum weicht mein HMAC von dem ab, den meine Bibliothek liefert?
Der Schlüssel oder die Bytes der Nachricht unterscheiden sich. Ein als Text eingegebener Schlüssel besteht aus seinen UTF-8-Bytes, und dieselben Buchstaben in hexadezimaler Form sind andere Bytes. Ein Zeilenumbruch am Ende der Nachricht ändert den HMAC ebenfalls.
Welche Schlüssellänge sollte ich verwenden?
Verwenden Sie einen zufälligen Schlüssel, der mindestens so lang ist wie die Hash-Ausgabe: 32 Bytes für HMAC-SHA-256. RFC 2104 rät dringend von einem kürzeren Schlüssel ab, und ein aus Wörtern oder einer kurzen Phrase gebildeter Schlüssel ist leicht zu erraten.
Kann ich mit dieser Seite eine Webhook-Signatur prüfen?
Ja, wenn Sie genau die Bytes verwenden, die signiert wurden. Webhook-Signaturen werden meist über den rohen Anfragekörper berechnet. Fügen Sie den Körper daher unverändert ein, denn ein neu formatiertes JSON ergibt einen anderen HMAC.
Wird mein Schlüssel oder meine Nachricht irgendwohin gesendet?
Nein. Der HMAC wird in Ihrem Browser mit der eingebauten Schnittstelle SubtleCrypto berechnet. Der Schlüssel und die Nachricht werden weder hochgeladen noch gespeichert.
Quellen
- RFC 2104 (englisch): HMAC: Keyed-Hashing for Message Authentication
- RFC 4231 (englisch): Identifiers and Test Vectors for HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384 and HMAC-SHA-512
- RFC 2202 (englisch): Test Cases for HMAC-MD5 and HMAC-SHA-1
- RFC 4648 (englisch): The Base16, Base32, and Base64 Data Encodings
- NIST FIPS 180-4 (englisch): Secure Hash Standard (SHA-1 und die SHA-2-Familie)
Zahlen und Text zuletzt geprüft: Dienstag, 10. November 2026.