Über dieses Tool
Ein HMAC beweist, dass eine Nachricht von jemandem stammt, der ein gemeinsames Geheimnis kennt, und nicht manipuliert wurde — der Mechanismus hinter signierten Webhooks, API-Request-Signierung und vielen Token-Verfahren. Geben Sie Nachricht und geheimen Schlüssel ein, wählen Sie SHA-256, SHA-384 oder SHA-512 und erhalten Sie die Signatur als Hexadezimal oder Base64.
Die Berechnung nutzt die native Web Crypto API des Browsers und läuft vollständig auf Ihrem Gerät, sodass Ihr geheimer Schlüssel nie übertragen wird. Sie aktualisiert sich live beim Tippen.
Häufige Fragen
Wofür wird HMAC verwendet?
HMAC (Hash-based Message Authentication Code) beweist sowohl, dass eine Nachricht nicht verändert wurde, als auch, dass sie von jemandem stammt, der einen gemeinsamen geheimen Schlüssel kennt — so signieren Dienste wie Stripe oder GitHub Webhook-Payloads, damit Sie die Echtheit prüfen können.
Ist HMAC dasselbe wie das bloße Hashen der Nachricht?
Nein. Ein einfacher Hash (SHA-256 nur der Nachricht) kann von jedem neu berechnet werden und beweist daher nichts über die Herkunft. HMAC mischt einen geheimen Schlüssel über eine Konstruktion ein, die gegen Length-Extension-Angriffe resistent ist, sodass nur jemand mit dem Schlüssel eine gültige Signatur erzeugen kann.
Wird mein geheimer Schlüssel irgendwohin gesendet?
Nein. Der HMAC wird lokal mit der Web-Crypto-API des Browsers (crypto.subtle) berechnet. Ihr Schlüssel und Ihre Nachricht verlassen niemals Ihr Gerät.
Warum meldet die Signaturprüfung „keine Übereinstimmung“, obwohl ich sie korrekt kopiert habe?
Webhook-Header haben oft ein Präfix wie sha256=<hex>, verwenden andere Groß-/Kleinschreibung oder haben umgebende Leerzeichen. Der Prüfer normalisiert die Groß-/Kleinschreibung und entfernt automatisch ein algorithm=-Präfix, prüfen Sie aber, ob Sie denselben Hash-Algorithmus und dieselbe Schlüsselkodierung (UTF-8/Hex/Base64) wie der Absender gewählt haben.
Welche Schlüsselkodierung sollte ich wählen?
Die meisten APIs liefern einen einfachen UTF-8-Geheimstring (z. B. whsec_...) — verwenden Sie UTF-8. Wählen Sie Hex oder Base64 nur, wenn die Dokumentation des Anbieters ausdrücklich angibt, dass der Schlüssel so kodiert ist.