HMAC-generator

HMAC är algoritmen bakom de flesta signerade webhooks, AWS Signature v4-rubriker och JWT HS256-tokens. Ange ett meddelande och en hemlig nyckel, välj en hashfamilj, så skapar generatorn en HMAC exakt enligt RFC 2104 – användbart för att verifiera vad din backend ska skicka eller för att återskapa en signatur du mottagit från ett API.

Så beräknar du en HMAC

  1. 1

    Klistra in meddelandet

    De exakta byte som ska signeras – en webhook-payload, en kanonisk begäran eller vilken sträng som helst.

  2. 2

    Ange den hemliga nyckeln

    Kan vara text eller hexadecimal. Generatorn fyller ut eller hashar den till blockstorleken enligt RFC.

  3. 3

    Välj hashalgoritmen

    SHA-256 är standardvalet; välj istället SHA-1, SHA-384, SHA-512 eller MD5 för kompatibilitet med äldre system.

  4. 4

    Kopiera signaturen

    Utdatan är hexadecimal i små bokstäver, redo att klistra in i en webhook-konfiguration eller en auktoriseringsrubrik.

HMAC i kärnan

HMAC omsluter en enkel hashfunktion i en nyckelbaserad konstruktion, så att signaturn inte kan förfalskas utan nyckeln.

RFC 2104-receptet

HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))

där k' är nyckeln som har padats till hashblockstorleken, samt opad = 0x5c repeated och ipad = 0x36 repeated.

Algoritmval

Algoritm Blockstorlek Utdatalängd Rekommenderas för
HMAC-SHA-256 64 byte 32 byte Modern standard, signering av webhooks
HMAC-SHA-384 128 byte 48 byte Undertecknande för API med högre säkerhet
HMAC-SHA-512 128 byte 64 byte Långlivade token
HMAC-SHA-1 64 byte 20 byte Äldre version (AWS S3 v2, OAuth 1.0)
HMAC-MD5 64 byte 16 byte Endast för äldre system; undvik användningen i nytt arbete

Var HMAC visas

  • GitHub-, Stripe- och Shopify-webhooks: rubriken X-Hub-Signature-256, Stripe-Signature osv.
  • AWS Signature v4: en kedja av HMAC-SHA256 över den kanoniska begäran.
  • JWT HS256: tokensignaturen är HMAC-SHA-256(header.payload, secret).
  • Token för lösenordsåterställning: HMAC över user_id + giltighetstid + en webbplatshemlighet.

Vanliga misstag

  • Att skicka en hexkodad nyckel som text istället för att först avkoda den till byte.
  • Att signera fel payload-byte: vissa webhooks signerar den råa begärankroppen inklusive blanksteg, medan andra signerar en kanonisk form.
  • Att använda == i JavaScript eller Python för att jämföra signaturer; använd alltid en tidssäker jämförelse för att motverka tidsbaserade attacker.

Vanliga frågor

Nästan alltid beror det på att meddelandets byte skiljer sig åt. Att signera den JSON-parsade kroppen leder till förändringar i blanksteg; signera istället den råa begärankroppen. Kontrollera också att nyckeln avkodas på samma sätt (hexadecimalt eller som råa byte) på båda sidor.

Ja. Om nyckeln är kortare än storleken på hashblocket kompletteras den med nollar; om den är längre hashas den först. RFC 2104 rekommenderar att nycklarna är minst lika långa som utdata (32 byte för SHA-256).

HMAC är fortfarande motståndskraftigt mot kända MD5-kollisioner, eftersom dessa attacker inte påverkar hur HMAC byggs upp. Använd dock HMAC-SHA-256 i all ny kod – både utvecklare och granskare förväntar sig detta.

Ja. Meddelandet och den hemliga nyckeln skickas till vår server via en krypterad HTTPS-anslutning för att HMAC ska kunna beräknas. De används endast för beräkningen och lagras eller loggas inte.

Relaterade verktyg

Verktyget finns på andra språk