Ga naar de inhoud

HMAC-SHA256-generator

Maak een HMAC-SHA256-handtekening van een bericht en een geheime sleutel. De tool codeert beide als UTF-8, past de HMAC-constructie uit RFC 2104 toe met SHA-256 en geeft de tag van 256 bits terug in hex of Base64. Ontwikkelaars gebruiken de tool om webhookhandtekeningen van diensten zoals Stripe, GitHub of Slack te debuggen, API-verzoeken te ondertekenen en de resultaten met hun eigen code te vergelijken. De sleutel wordt nooit teruggegeven of gelogd.

Resetten

Veelgestelde vragen

Wat is HMAC-SHA256?

HMAC-SHA256 is een berichtauthenticatiecode op basis van SHA-256 en een geheime sleutel, zoals gedefinieerd in RFC 2104. Alleen iemand met de sleutel kan de juiste tag voor een bericht berekenen. Het resultaat is 32 bytes, oftewel 64 hextekens.

Hoe verifieer ik een webhookhandtekening?

Plak de exacte onbewerkte requestbody als bericht en uw ondertekeningsgeheim als sleutel. Vergelijk het resultaat vervolgens met de handtekeningheader. Veel diensten ondertekenen een combinatie, zoals de timestamp van Stripe, een punt en de body. Stel het bericht dus samen zoals beschreven in hun documentatie. Eén gewijzigd byte levert een andere tag op.

Is er een bekende testvector?

Testgeval 2 van RFC 4231 gebruikt de sleutel Jefe en het bericht what do ya want for nothing? De verwachte waarde is 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Deze tool geeft precies die waarde terug.

Hoe worden de sleutel en het bericht gecodeerd?

Beide worden gecodeerd als UTF-8-tekst. Als uw geheime sleutel in hex of Base64 wordt opgegeven, zoals bij sommige diensten, verschillen de bytes van de zichtbare tekst en moet u de sleutel eerst in uw eigen code decoderen. Witruimte en regeleinden tellen mee in beide velden.

Wordt mijn geheime sleutel opgeslagen?

Nee. De sleutel wordt tijdens het verzoek alleen gebruikt om de tag te berekenen. Hij wordt niet opgenomen in het antwoord, niet gelogd en niet opgeslagen.

Mag de sleutel leeg of erg lang zijn?

HMAC accepteert sleutels van elke lengte, ook een lege sleutel. Sleutels langer dan 64 bytes worden eerst gehasht met SHA-256, zoals voorgeschreven in de RFC. Kies voor echt gebruik een willekeurige sleutel van minstens 32 bytes.

Moet ik hex of Base64 kiezen?

Gebruik de indeling die de andere partij verstuurt. GitHub en Stripe gebruiken hex, terwijl Slack hex vooraf laat gaan door v0= en veel systemen op basis van AWS en JWT Base64 gebruiken. Beide coderen dezelfde 32 bytes.

Is HMAC-SHA256 hetzelfde als SHA-256 van de samengevoegde sleutel en het bericht?

Nee. HMAC hasht het bericht twee keer met gepadde binnenste en buitenste sleutels. Dit beschermt tegen aanvallen met lengte-uitbreiding. De sleutel en het bericht samenvoegen en één keer hashen levert een ander, zwakker resultaat op.

Hoe vergelijk ik handtekeningen in mijn code?

Gebruik een functie voor constante-tijdvergelijking, zoals crypto.timingSafeEqual in Node.js of hmac.compare_digest in Python. Een gewone tekenreeksvergelijking kan timinginformatie over de verwachte tag lekken.

Hoe groot mag het bericht zijn?

Het bericht en de sleutel samen mogen maximaal 5 MiB tekst bevatten. Dat is genoeg voor gebruikelijke webhookpayloads en API-verzoeken.

Over OneClick Pro

OneClick Pro is een gratis verzameling van meer dan 150 webtools voor dagelijks werk: afbeeldingen en eenheden converteren, code opmaken en valideren, domeinen en SEO controleren, en werken met tekst, datums en getallen. Elke tool werkt zonder registratie of abonnement. Wat u invoert, wordt alleen gebruikt om uw resultaat te berekenen en wordt nooit opgeslagen. Gebruik de verzameling als snelle gereedschapskist voor eenmalige taken of maak een bladwijzer van de tools die u dagelijks gebruikt.