HMAC (Hash-based Message Authentication Code) ist ein weit verbreitetes Verfahren zur Nachrichtenauthentifizierung und in RFC 2104 definiert. Dabei werden ein geheimer Schlüssel und eine Nachricht gemeinsam durch eine Hashfunktion verarbeitet, um eine Signatur mit fester Länge zu erzeugen. Anders als bei normalen Hashes muss man den Schlüssel kennen, um die Signatur zu erzeugen oder zu prüfen. So bestätigt HMAC sowohl Integrität als auch Echtheit.
**HMAC ist ein Grundbaustein moderner API-Sicherheit**. Stripe, GitHub, Shopify, Slack und Twilio signieren Webhook-Ereignisse mit HMAC-SHA256, damit Empfänger prüfen können, ob die Anfrage wirklich von der Plattform stammt. AWS nutzt HMAC-SHA256 für Signature V4. Auch der JWT-Algorithmus HS256 ist im Kern HMAC-SHA256. Wer HMAC versteht, hat einen wichtigen Teil von API-Sicherheit verstanden.
**Verschiedene Plattformen verwenden verschiedene Signaturformate**: Stripe nutzt `t=timestamp,v1=hex_signature` und signiert `timestamp.payload`; GitHub verwendet `X-Hub-Signature-256` im Format `sha256=hex_signature`; Shopify sendet `X-Shopify-Hmac-Sha256` als Base64-codierten Wert. Dieses Tool kann diese gängigen Formate automatisch erkennen und prüfen.
**Warum schlägt eine Signaturprüfung fehl?** Meist liegt es an einem abweichenden Nachrichtenformat: Vielleicht signiert die Plattform `timestamp.payload` statt des rohen Nachrichtenkörpers, der Inhalt enthält zusätzliche Zeilenumbrüche oder die Signatur trägt ein Präfix wie `sha256=`, das entfernt werden muss. Lies die Plattformdokumentation genau und vergleiche am besten mit dem rohen Hex-Wert.
Dieses Tool nutzt die native **Web Crypto API** des Browsers (SubtleCrypto) für HMAC-Berechnungen, also dieselbe kryptografische Grundlage, auf der auch HTTPS und TLS aufbauen. Alle Berechnungen laufen lokal; Schlüssel und Nachrichten werden nie an einen Server gesendet. Im Network-Panel der Browser-DevTools kannst du prüfen, dass keine externen Requests erfolgen.