tigtools

HMAC-generator

Bereken een keyed message authentication code (HMAC) voor een bericht en geheime sleutel, of controleer een ontvangen handtekening. De sleutel en het bericht blijven in je browser.

Werkt in je browser Geen registratie nodig

De sleutel en het bericht worden alleen in dit browsertabblad verwerkt en worden nooit ergens naartoe verzonden. Plak toch geen actieve productiesleutels op een gedeelde of niet-vertrouwde computer.
Sleutelformaat

Wordt precies zoals getypt als UTF-8 ondertekend. Een spatie of regeleinde aan het einde verandert het resultaat.

Uitvoer

Plak een handtekening in hex (hoofdletters of kleine letters) of Base64 om deze met het resultaat hierboven te vergelijken.

Zo gebruik je deze tool

  1. Voer de geheime sleutel in en kies of deze uit platte tekst of hexbytes bestaat.
  2. Plak het bericht, bijvoorbeeld een webhook-payload precies zoals je die hebt ontvangen.
  3. Kies het algoritme en de uitvoercodering die je service gebruikt. De HMAC wordt bijgewerkt terwijl je typt.
  4. Plak de handtekening in het verificatieveld en controleer of er ‘Overeenkomst’ staat.

Hoe het werkt

HMAC (RFC 2104) combineert een geheime sleutel met een hashfunctie om een handtekening te maken die alleen iemand met die sleutel kan produceren. Diensten zoals webhooks en ondertekende API-verzoeken sturen bij elk bericht een HMAC mee, zodat de ontvanger kan controleren of het bericht authentiek en ongewijzigd is.

Deze tool gebruikt de Web Crypto API van uw browser (crypto.subtle.importKey en sign) en is gecontroleerd aan de hand van de testvectoren uit RFC 4231 en RFC 2202. Een tekstsleutel en het bericht worden gecodeerd als UTF-8. Een hex-sleutel wordt gedecodeerd naar ruwe bytes; spaties, dubbele punten en een voorafgaande 0x worden genegeerd. HMAC-SHA-256 is de meest gebruikte keuze; HMAC-SHA-1 wordt nog steeds als veilig beschouwd voor een MAC, maar wordt vooral gebruikt door oudere API's.

Komt uw handtekening niet overeen, controleer dan de details die het vaakst verschillen: de exacte bytes van het bericht (veel webhookproviders ondertekenen de onbewerkte body, niet opnieuw opgemaakte JSON), een tijdstempel of voorvoegsel dat de provider aan de te ondertekenen tekenreeks toevoegt, of de sleutel als tekst wordt gebruikt of eerst uit hex of Base64 moet worden gedecodeerd, en of de verwachte handtekening hex of Base64 is en een voorvoegsel zoals “sha256=” bevat. Verwijder dat voorvoegsel voordat u vergelijkt.

Voorbeelden

Testgeval uit RFC 4231

Met de sleutel “Jefe” (tekst), het bericht “what do ya want for nothing?” en HMAC-SHA-256 krijgt u 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Gebruik ‘Voorbeeld proberen’ om dit voorbeeld te laden.

Een webhookhandtekening controleren

Een provider stuurt bij elk verzoek de header X-Signature: sha256=…. Plak de onbewerkte requestbody als bericht en uw webhookgeheim als sleutel, kies HMAC-SHA-256 en Hex, en plak daarna de waarde na “sha256=” in het verificatieveld.

Een hex-gecodeerde sleutel

Sommige systemen leveren sleutels aan als hex-tekenreeksen, zoals 0b0b0b…. Kies Hex als sleutelindeling, zodat de tool ondertekent met de gedecodeerde bytes. Dezelfde tekenreeks als tekst gebruiken geeft een heel ander resultaat.

Veelgestelde vragen

Wat is het verschil tussen een HMAC en een gewone hash?

Iedereen kan een gewone hash, zoals SHA-256, van een bericht berekenen. Een HMAC is ook afhankelijk van een geheime sleutel, dus alleen iemand met die sleutel kan de HMAC maken of controleren. Daarmee wordt aangetoond dat het bericht afkomstig is van iemand met de sleutel en niet is gewijzigd.

Waarom komt mijn HMAC niet overeen met die van mijn server?

De invoerbytes verschillen bijna altijd: regeleinden, witruimte, de volgorde van JSON-sleutels, tekencodering of een sleutel die uit hex of Base64 moet worden gedecodeerd. Vergelijk ook dezelfde codering (hex of Base64) en verwijder voorvoegsels zoals “sha256=”.

Wordt mijn geheime sleutel ergens naartoe gestuurd?

Nee. De sleutel en het bericht worden alleen gebruikt door de Web Crypto API in dit browsertabblad. Ze worden niet geüpload, opgeslagen of opgenomen in analytics.

Is HMAC-SHA-1 nog veilig?

Botsingen in SHA-1 maken HMAC-SHA-1 niet direct onveilig. Het wordt nog steeds geaccepteerd vanwege compatibiliteit. Gebruik voor nieuwe systemen HMAC-SHA-256 of sterker.

Privacy

De sleutel, het bericht en het resultaat bestaan alleen in dit browsertabblad. Er wordt niets geüpload, opgeslagen of naar analytics verzonden; alleen een anoniem evenement dat de tool is gebruikt, wordt geregistreerd.