Slik bruker du det
- Skriv inn den hemmelige nøkkelen, og velg om den er ren tekst eller hex-byte.
- Lim inn meldingen, for eksempel en webhook-nyttelast nøyaktig slik den ble mottatt.
- Velg algoritmen og utdatakodingen tjenesten din bruker; HMAC-verdien oppdateres mens du skriver.
- For å kontrollere en signatur limer du den inn i verifiseringsfeltet og ser etter «Match».
Slik fungerer det
HMAC (RFC 2104) kombinerer en hemmelig nøkkel med en hashfunksjon for å produsere en signatur som bare noen med nøkkelen kan opprette. Tjenester som webhooks og signerte API-forespørsler sender en HMAC med hver melding, slik at mottakeren kan kontrollere at meldingen er ekte og uendret.
Dette verktøyet bruker nettleserens Web Crypto API (crypto.subtle.importKey og sign) og er testet mot testvektorene i RFC 4231 og RFC 2202. En tekstnøkkel og meldingen kodes som UTF-8. En hex-nøkkel dekodes til rå byte; mellomrom, kolon og en ledende 0x ignoreres. HMAC-SHA-256 er det vanligste valget; HMAC-SHA-1 regnes fortsatt som sikkert som MAC, men brukes hovedsakelig av eldre API-er.
Hvis signaturen din ikke stemmer, sjekk detaljene som oftest avviker: de nøyaktige meldingsbytene (mange webhook-leverandører signerer den rå meldingsteksten, ikke omformatert JSON), et tidsstempel eller prefiks som leverandøren legger til i den signerte strengen, om nøkkelen brukes som tekst eller må dekodes fra hex eller Base64 først, og om den forventede signaturen er hex eller Base64 og har et prefiks som «sha256=», som du bør fjerne før sammenligning.
Eksempler
RFC 4231-testtilfelle
Nøkkel «Jefe» (tekst), melding «what do ya want for nothing?» og HMAC-SHA-256 gir 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Bruk «Prøv et eksempel» for å laste det inn.
Sjekke en webhook-signatur
En leverandør sender headeren X-Signature: sha256=… med hver forespørsel. Lim inn den rå forespørselsteksten som melding, webhook-hemmeligheten som nøkkel, velg HMAC-SHA-256 og Hex, og lim deretter inn verdien etter «sha256=» i verifiseringsfeltet.
En hex-kodet nøkkel
Noen systemer utsteder nøkler som hex-strenger, for eksempel 0b0b0b…. Velg Hex som nøkkelformat slik at verktøyet signerer med de dekodede bytene; å behandle samme streng som tekst gir et helt annet resultat.
Ofte stilte spørsmål
Hva er forskjellen mellom en HMAC og en vanlig hash?
Alle kan beregne en vanlig hash som SHA-256 av en melding. En HMAC avhenger også av en hemmelig nøkkel, så bare noen med nøkkelen kan produsere eller kontrollere den. Det beviser at meldingen kom fra en nøkkelinnehaver og ikke ble endret.
Hvorfor stemmer ikke HMAC-en min med den fra serveren?
Inndatabytene avviker nesten alltid: linjeskift, mellomrom, JSON-nøkkelrekkefølge, tegnkoding eller en nøkkel som skal dekodes fra hex eller Base64. Sammenlign også samme koding (hex mot Base64) og fjern prefikser som «sha256=».
Blir den hemmelige nøkkelen min sendt noe sted?
Nei. Nøkkelen og meldingen brukes bare av Web Crypto API i denne nettleserfanen. De lastes ikke opp, lagres ikke og inkluderes ikke i analyser.
Er HMAC-SHA-1 fortsatt sikkert?
SHA-1-kollisjoner bryter ikke HMAC-SHA-1 direkte, og den er fortsatt akseptert for kompatibilitet. Bruk HMAC-SHA-256 eller sterkere for nye systemer.
Personvern
Nøkkelen, meldingen og resultatet finnes bare i denne nettleserfanen. Ingenting lastes opp, lagres eller sendes til analyse; det registreres bare en anonym hendelse om at verktøyet ble brukt.