Zo gebruik je deze tool
- Voer de geheime sleutel in en kies of deze uit platte tekst of hexbytes bestaat.
- Plak het bericht, bijvoorbeeld een webhook-payload precies zoals je die hebt ontvangen.
- Kies het algoritme en de uitvoercodering die je service gebruikt. De HMAC wordt bijgewerkt terwijl je typt.
- 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.