DevToolPal
NL

HMAC-generator

Bereken HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 en HMAC-SHA512 van een bericht met een geheime sleutel, in hex of Base64.

Draait lokaal, wordt nooit geüpload

Opties

Sleutelformaat
Uitvoer

Bericht

0 tekens · 0 B

HMAC

Het resultaat verschijnt hier

Wat het doet

HMAC (Hash-based Message Authentication Code, RFC 2104) combineert een geheime sleutel met een hashfunctie om een bericht te ondertekenen. De ontvanger kent dezelfde sleutel, berekent de HMAC opnieuw en vergelijkt die met de meegestuurde waarde. Is het bericht gewijzigd of kende de afzender de sleutel niet, dan komen de waarden niet overeen.

HMAC’s zijn overal: webhookhandtekeningen (GitHub, Stripe, Slack), ondertekende API-verzoeken, JWT’s met HS256, cookiehandtekeningen en eenmalige wachtwoorden. Deze tool berekent HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 en HMAC-SHA512 tegelijk, zodat je kunt vergelijken met wat je systeem gebruikt.

Zo gebruik je het

  1. Typ de Geheime sleutel. Zet het Sleutelformaat om als de sleutel als hex- of Base64-bytes is gegeven in plaats van tekst.
  2. Plak het Bericht of klik op Voorbeeld.
  3. Alle HMAC’s worden bijgewerkt terwijl je typt. Kies Hex of Base64 en kopieer de waarde die je nodig hebt.

Het bericht wordt precies zoals getypt als UTF-8 gecodeerd, inclusief spaties en regeleinden.

Voorbeeld

Met de sleutel key en het bericht The quick brown fox jumps over the lazy dog is HMAC-SHA256 f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. Op de opdrachtregel kun je dat controleren:

echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"

Let op de -n: zonder die optie voegt echo een regeleinde toe en verandert de HMAC.

Webhooks controleren

Om een webhook te controleren neem je de ruwe request-body vóór het parsen van de JSON, bouw je de string die de dienst beschrijft (vaak timestamp.body), bereken je de HMAC met je ondertekeningsgeheim en vergelijk je die met de handtekeningheader. Vergelijk handtekeningen in je eigen code met een constante-tijdfunctie om timingaanvallen te voorkomen.

Veelgestelde vragen

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

Een gewone hash zoals SHA-256 kan iedereen berekenen. Een HMAC mengt een geheime sleutel in de hash, zodat alleen wie de sleutel kent de waarde kan maken of controleren. Het is een berichtauthenticatiecode, niet alleen een checksum.

› Welk HMAC-algoritme moet ik gebruiken?

HMAC-SHA256 is de gebruikelijke keuze en wordt door de meeste API’s en webhooks verwacht. HMAC-SHA512 is ook prima. HMAC-MD5 en HMAC-SHA1 gelden als MAC nog als veilig, maar gebruik ze alleen als een ouder systeem erom vraagt.

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

Controleer de exacte bytes van het bericht (een regeleinde aan het eind of andere JSON-spaties veranderen alles), het sleutelformaat (tekst, hex of Base64) en de uitvoercodering. Webhookdiensten ondertekenen vaak een string van een tijdstempel en de ruwe request-body.

› Wordt mijn geheime sleutel opgeslagen of verstuurd?

Nee. De HMAC wordt in je browser berekend. De sleutel staat alleen in het geheugen van deze pagina: hij wordt niet opgeslagen, niet in de adresbalk gezet en niet in deellinks opgenomen.