Was das Tool macht
HMAC (Hash-based Message Authentication Code, RFC 2104) kombiniert einen geheimen Schlüssel mit einer Hashfunktion, um eine Nachricht zu signieren. Der Empfänger kennt denselben Schlüssel, berechnet den HMAC neu und vergleicht ihn mit dem mitgeschickten Wert. Wurde die Nachricht verändert oder kannte der Absender den Schlüssel nicht, stimmen die Werte nicht überein.
HMACs sind überall: Webhook-Signaturen (GitHub, Stripe, Slack), signierte API-Anfragen, JWTs mit HS256, Cookie-Signaturen und Einmalpasswörter. Dieses Tool berechnet HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 und HMAC-SHA512 gleichzeitig, damit Sie mit dem Wert Ihres Systems vergleichen können.
So funktioniert es
- Geben Sie den Geheimen Schlüssel ein. Stellen Sie das Schlüsselformat um, wenn der Schlüssel als Hex- oder Base64-Bytes statt als Text vorliegt.
- Fügen Sie die Nachricht ein oder klicken Sie auf Beispiel.
- Alle HMACs aktualisieren sich während der Eingabe. Wählen Sie Hex oder Base64 und kopieren Sie den benötigten Wert.
Die Nachricht wird genau wie eingegeben als UTF-8 kodiert, einschließlich Leerzeichen und Zeilenumbrüchen.
Beispiel
Mit dem Schlüssel key und der Nachricht The quick brown fox jumps over the lazy dog ist HMAC-SHA256 f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. Auf der Kommandozeile lässt sich das prüfen:
echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"
Beachten Sie das -n: Ohne es hängt echo einen Zeilenumbruch an und der HMAC ändert sich.
Webhooks prüfen
Um einen Webhook zu prüfen, nehmen Sie den unveränderten Request-Body vor dem JSON-Parsen, bilden den vom Anbieter dokumentierten String (oft timestamp.body), berechnen den HMAC mit Ihrem Signatur-Secret und vergleichen ihn mit dem Signatur-Header. Vergleichen Sie Signaturen im eigenen Code mit einer zeitkonstanten Funktion, um Timing-Angriffe zu vermeiden.
FAQ
› Was ist der Unterschied zwischen einem Hash und einem HMAC?
Einen einfachen Hash wie SHA-256 kann jeder berechnen. Ein HMAC mischt einen geheimen Schlüssel in den Hash, sodass nur wer den Schlüssel kennt den Wert erzeugen oder prüfen kann. Es ist ein Nachrichtenauthentifizierungscode, nicht nur eine Prüfsumme.
› Welchen HMAC-Algorithmus sollte ich verwenden?
HMAC-SHA256 ist die übliche Wahl und wird von den meisten APIs und Webhooks erwartet. HMAC-SHA512 ist ebenfalls gut. HMAC-MD5 und HMAC-SHA1 gelten als MAC noch als sicher, sollten aber nur verwendet werden, wenn ein älteres System sie verlangt.
› Warum stimmt mein HMAC nicht mit dem meines Servers überein?
Prüfen Sie die genauen Bytes der Nachricht (ein abschließender Zeilenumbruch oder andere JSON-Leerzeichen ändern alles), das Schlüsselformat (Text, Hex oder Base64) und die Ausgabekodierung. Webhook-Anbieter signieren oft einen String aus Zeitstempel und unverändertem Request-Body.
› Wird mein geheimer Schlüssel gespeichert oder gesendet?
Nein. Der HMAC wird in Ihrem Browser berechnet. Der Schlüssel liegt nur im Speicher dieser Seite: Er wird nicht gespeichert, nicht in die Adresszeile geschrieben und nicht in Teilen-Links aufgenommen.