HMAC-Generator (SHA-256, SHA-384, SHA-512, SHA-1)
Aus Nachricht und geheimem Schlüssel eine HMAC-Signatur berechnen und eine Webhook-Signatur mit dem erwarteten Wert vergleichen
Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.
Hat dieses Werkzeug geholfen?
Danke, Ihre Rückmeldung ist angekommen.
So funktioniert es
Fügen Sie links die zu signierende Nachricht ein und tragen Sie im Feld „Geheimer Schlüssel“ den Schlüssel ein, den Ihnen der Dienst gegeben hat; die HMAC-Signatur erscheint rechts während der Eingabe. Testen Sie den Webhook eines Zahlungsanbieters, fügen Sie den Anfrage-Body genau so ein, wie er ankam, ohne ein zusätzliches Leerzeichen: Ein überzähliger Zeilenumbruch reicht, um die ganze Signatur zu ändern. Die Signatur aus dem Header des Dienstes gehört ins Feld „Erwartete Signatur“; das Werkzeug entfernt Präfixe wie sha256=, erkennt selbst, ob der Wert Hex oder Base64 ist, und meldet STIMMT ÜBEREIN oder STIMMT NICHT. Ist Ihr Schlüssel eine Folge zufälliger Bytes in Hex-Schreibweise, stellen Sie das Schlüsselformat auf „Hex-Bytes“; als Text gelesen ergeben dieselben Zeichen einen völlig anderen Schlüssel. Die meisten Dienste verwenden SHA-256; steht in der Dokumentation HmacSHA512, wählen Sie SHA-512. Die Berechnung erledigt die eingebaute Kryptografie Ihres Browsers: Nachricht und Schlüssel verlassen diese Seite nicht, und der Schlüssel landet auch nicht in Fehlerprotokollen.
Dieses Werkzeug ist auch als hmac generator, hmac sha256 berechnen, hmac online berechnen, webhook signatur pruefen, hmac sha512 bekannt.
Was ist HMAC?
HMAC (Hash-based Message Authentication Code) erzeugt aus einer Nachricht und einem geheimen Schlüssel eine Signatur fester Länge (RFC 2104). Der Schlüssel wird mit zwei verschiedenen Füllwerten gemischt und zweimal durch die gewählte Hashfunktion geschickt. Das Ergebnis zeigt, dass die Nachricht unverändert ist und von jemandem stammt, der den Schlüssel kennt. Webhooks, signierte API-Anfragen und Sitzungs-Cookies werden so geschützt.
Was ist Webhook-Signatur?
Eine Webhook-Signatur ist der HMAC-Wert, den ein Dienst in einen Header schreibt, wenn er Ihnen eine Benachrichtigung schickt. Der Dienst signiert den Body mit einem geheimen Schlüssel, den er mit Ihnen teilt; Sie signieren denselben Body mit demselben Schlüssel und vergleichen Ihr Ergebnis mit dem Header. Stimmen beide überein, stammt die Benachrichtigung wirklich von diesem Dienst. Der Header-Name ist je nach Dienst anders, der Wert trägt oft ein Präfix sha256= oder kommt als Base64.
Was ist der Unterschied zwischen HMAC und einer digitalen Signatur?
Bei HMAC teilen Signierender und Prüfender denselben geheimen Schlüssel; jeder der beiden könnte die Signatur erzeugt haben, gegenüber Dritten beweist HMAC also nicht, wer signiert hat. Eine digitale Signatur (RSA, ECDSA) arbeitet mit zwei Schlüsseln: Nur der Inhaber signiert, jeder prüft mit dem öffentlichen Schlüssel. HMAC ist viel schneller und genügt, wo zwei Systeme einander vertrauen, etwa bei Webhooks und APIs; Verträge und Software-Veröffentlichungen, bei denen das Signieren nicht abstreitbar sein darf, brauchen eine digitale Signatur.
Signatur stimmt nicht? Die vier häufigsten Ursachen
HMAC reagiert auf jedes einzelne Byte der Nachricht. Der häufigste Grund für eine abgelehnte Webhook-Signatur: Der Body, den Sie signieren, ist nicht der, der signiert wurde. JSON hübsch formatieren, Felder umsortieren oder einen Zeilenumbruch anhängen verändert das Ergebnis. Signieren Sie immer den unveränderten Roh-Body.
Weitere Ursachen: der Schlüssel im falschen Format (Hex-Schlüssel als Text gelesen), der falsche Algorithmus (SHA-1 statt SHA-256) und der Vergleich unterschiedlicher Schreibweisen (Hex auf der einen, Base64 auf der anderen Seite). Manche Dienste signieren einen Zeitstempel zusammen mit dem Body; dann lautet die signierte Zeichenfolge etwa „Zeitstempel.Body“ – ein Blick in die Dokumentation klärt das.
- Body verändert: Leerzeichen, Zeilenumbrüche, Feldreihenfolge
- Schlüsselformat: Hex-Schlüssel als Text gelesen
- Algorithmus: SHA-1, SHA-256 und SHA-512 verwechselt
- Ausgabe: Hex mit Base64 verglichen oder Zeitstempel vor die Nachricht gesetzt
Welchen Algorithmus sollten Sie wählen?
Den, mit dem die Gegenseite signiert. Er steht in der Dokumentation des Dienstes und verrät sich an der Länge der Signatur: In Hex bedeuten 40 Stellen SHA-1, 64 SHA-256, 96 SHA-384 und 128 SHA-512. Bauen Sie ein eigenes System, genügt HMAC-SHA256 – die am breitesten unterstützte Wahl.
Die bekannte Kollisionsschwäche von SHA-1 bricht HMAC nicht direkt, trotzdem gehört SHA-1 nicht in neue Entwürfe und steht hier nur für ältere Systeme bereit. HMAC mit MD5 gibt es nicht: Die Kryptografie der Browser unterstützt MD5 nicht, und dieses Werkzeug nutzt diese Schnittstelle statt eines selbst geschriebenen Algorithmus.
Häufige Fragen
Wie berechne ich einen HMAC-SHA256?
Fügen Sie die Nachricht links und den geheimen Schlüssel ins Schlüsselfeld ein, der Algorithmus bleibt auf SHA-256. Rechts erscheint die 64-stellige Hex-Signatur; für Base64 ändern Sie das Ausgabeformat. Gerechnet wird in Ihrem Browser.
Was ist der Unterschied zwischen HMAC und einem einfachen Hash?
Einen einfachen Hash kann jeder berechnen – wer die Nachricht ändert, erzeugt auch den neuen Hash. HMAC bezieht einen geheimen Schlüssel ein: Ohne ihn bekommt eine veränderte Nachricht keine gültige Signatur. So belegt HMAC, dass die Nachricht von jemandem stammt, der den Schlüssel kennt, und unterwegs nicht verändert wurde.
Ist es sicher, meinen geheimen Schlüssel hier einzugeben?
Der Schlüssel bleibt in Ihrem Browser: Der Werkzeugcode darf keine Netzwerkanfragen stellen, und selbst bei einem Fehler steht der Schlüssel nicht im Fehlerprotokoll, sondern wird durch [gizli] ersetzt. Verwenden Sie an einem gemeinsam genutzten Rechner trotzdem lieber einen eigenen Testschlüssel statt des Produktivschlüssels.
Warum erscheint ohne Schlüssel kein Ergebnis?
HMAC setzt per Definition einen Schlüssel voraus, und die Kryptografie des Browsers lehnt einen leeren ab. Für eine Prüfsumme ohne Schlüssel über eine Datei nutzen Sie den Hash-Generator.