tigtools

HMAC-Generator

Berechnen Sie einen schlüsselbasierten Nachrichtenauthentifizierungscode (HMAC) für eine Nachricht und einen geheimen Schlüssel oder prüfen Sie eine empfangene Signatur. Schlüssel und Nachricht bleiben in Ihrem Browser.

Läuft in Ihrem Browser Keine Anmeldung erforderlich

Schlüssel und Nachricht werden nur in diesem Browser-Tab verarbeitet und nirgendwohin gesendet. Fügen Sie dennoch keine aktiven Produktionsschlüssel auf einem gemeinsam genutzten oder nicht vertrauenswürdigen Computer ein.
Schlüsselformat

Wird exakt wie eingegeben als UTF-8 signiert. Ein nachfolgendes Leerzeichen oder ein Zeilenumbruch ändert das Ergebnis.

Ausgabe

Fügen Sie eine Signatur als Hex (Groß- und Kleinschreibung beliebig) oder Base64 ein, um sie mit dem obigen Ergebnis zu vergleichen.

Anleitung

  1. Geben Sie den geheimen Schlüssel ein und wählen Sie aus, ob er als Klartext oder als Hex-Bytes vorliegt.
  2. Fügen Sie die Nachricht ein, zum Beispiel den unveränderten Inhalt eines Webhook-Aufrufs.
  3. Wählen Sie den Algorithmus und die Ausgabe-Kodierung Ihres Dienstes. Der HMAC wird während der Eingabe aktualisiert.
  4. Um eine Signatur zu prüfen, fügen Sie sie in das Prüffeld ein und achten Sie auf „Stimmt überein“.

So funktioniert es

HMAC (RFC 2104) kombiniert einen geheimen Schlüssel mit einer Hashfunktion, um eine Signatur zu erzeugen, die nur jemand mit diesem Schlüssel erstellen kann. Dienste wie Webhooks und signierte API-Anfragen senden mit jeder Nachricht einen HMAC, damit der Empfänger prüfen kann, ob die Nachricht authentisch und unverändert ist.

Dieses Tool verwendet die Web Crypto API Ihres Browsers (crypto.subtle.importKey und sign) und wurde anhand der Testvektoren aus RFC 4231 und RFC 2202 geprüft. Ein Textschlüssel und die Nachricht werden als UTF-8 kodiert. Ein Hexschlüssel wird in rohe Bytes umgewandelt; Leerzeichen, Doppelpunkte und ein vorangestelltes 0x werden ignoriert. HMAC-SHA-256 ist die gängigste Wahl; HMAC-SHA-1 gilt als MAC weiterhin als sicher, wird aber hauptsächlich von älteren APIs verwendet.

Wenn Ihre Signatur nicht übereinstimmt, prüfen Sie die häufigsten Abweichungen: die exakten Nachrichtenbytes (viele Webhook-Anbieter signieren den rohen Inhalt und nicht neu formatiertes JSON), einen Zeitstempel oder Präfix, den der Anbieter der signierten Zeichenfolge hinzufügt, ob der Schlüssel als Text verwendet oder zuerst aus Hex oder Base64 dekodiert werden muss und ob die erwartete Signatur als Hex oder Base64 vorliegt und ein Präfix wie „sha256=“ enthält, das Sie vor dem Vergleich entfernen sollten.

Beispiele

RFC 4231-Testfall

Mit dem Schlüssel „Jefe“ (Text), der Nachricht „what do ya want for nothing?“ und HMAC-SHA-256 ergibt sich 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Wählen Sie „Beispiel ausprobieren“, um die Werte zu laden.

Webhook-Signatur prüfen

Ein Anbieter sendet mit jeder Anfrage den Header X-Signature: sha256=… . Fügen Sie den rohen Anfrageinhalt als Nachricht und Ihr Webhook-Geheimnis als Schlüssel ein, wählen Sie HMAC-SHA-256 und Hex und fügen Sie dann den Wert nach „sha256=“ in das Prüffeld ein.

Hex-kodierter Schlüssel

Manche Systeme geben Schlüssel als Hex-Zeichenfolgen aus, zum Beispiel 0b0b0b… . Wählen Sie „Hex“ als Schlüsselformat, damit das Tool mit den dekodierten Bytes signiert. Wird dieselbe Zeichenfolge als Text behandelt, ergibt sich ein völlig anderes Ergebnis.

Häufig gestellte Fragen

Was ist der Unterschied zwischen einem HMAC und einem einfachen Hash?

Jeder kann einen einfachen Hash wie SHA-256 einer Nachricht berechnen. Ein HMAC hängt zusätzlich von einem geheimen Schlüssel ab. Daher kann ihn nur jemand mit diesem Schlüssel erstellen oder überprüfen. So wird nachgewiesen, dass die Nachricht von jemandem mit dem Schlüssel stammt und nicht verändert wurde.

Warum stimmt mein HMAC nicht mit dem meines Servers überein?

Die Eingabebytes unterscheiden sich fast immer: Zeilenumbrüche, Leerzeichen, die Reihenfolge der JSON-Schlüssel, die Zeichenkodierung oder ein Schlüssel, der aus Hex oder Base64 dekodiert werden muss. Achten Sie auch auf dasselbe Ausgabeformat (Hex oder Base64) und entfernen Sie Präfixe wie „sha256=“.

Wird mein geheimer Schlüssel irgendwohin gesendet?

Nein. Schlüssel und Nachricht werden nur von der Web Crypto API in diesem Browser-Tab verarbeitet. Sie werden weder hochgeladen noch gespeichert oder in die Analysedaten aufgenommen.

Ist HMAC-SHA-1 noch sicher?

Kollisionen bei SHA-1 brechen HMAC-SHA-1 nicht direkt, und der Algorithmus wird aus Kompatibilitätsgründen weiterhin akzeptiert. Verwenden Sie für neue Systeme HMAC-SHA-256 oder einen stärkeren Algorithmus.

Datenschutz

Schlüssel, Nachricht und Ergebnis bleiben in diesem Browser-Tab. Nichts wird hochgeladen, gespeichert oder an Analytics gesendet; lediglich ein anonymes Ereignis zur Nutzung des Tools wird erfasst.