CodeKitHub
Kodingsverktøy

HMAC-generator

Sist oppdatert:

Dette verktøyet beregner en HMAC (Hash-based Message Authentication Code) fra en hemmelig nøkkel og en melding, med SHA-1, SHA-256, SHA-384 eller SHA-512 som underliggende hash-funksjon. I motsetning til en vanlig hash krever en HMAC en delt hemmelig nøkkel, så den beviser at meldingen kom fra noen som har den nøkkelen og ikke ble endret underveis — nettopp derfor bruker API-er HMAC-er for å signere forespørsler, og webhooks bruker det til å bekrefte avsenderen av en nyttelast. Alt kjører lokalt via nettleserens innebygde Web Crypto API; den hemmelige nøkkelen og meldingen din sendes aldri til noen server.

HMAC-SHA1
HMAC-SHA256
HMAC-SHA384
HMAC-SHA512

Hva er dette verktøyet?

HMAC står for Hash-based Message Authentication Code. Den kombinerer en hemmelig nøkkel med en melding og en standard hash-funksjon (som SHA-256) for å produsere et sammendrag med fast lengde. Alle med samme nøkkel og melding vil beregne nøyaktig samme HMAC — men uten nøkkelen er det beregningsmessig umulig å produsere en gyldig HMAC for en melding, selv om du kjenner hash-algoritmen som brukes.

Det er hovedforskjellen fra en vanlig hash: en vanlig hash (MD5, SHA-256 osv.) tar bare meldingen som input, så hvem som helst kan beregne den, og den beviser ingenting om hvem som opprettet den. En HMAC tar meldingen *og* en hemmelig nøkkel, så en gyldig HMAC beviser at avsenderen hadde hemmeligheten — det er en autentiseringsmekanisme, ikke bare en integritetssjekk.

HMAC er formelt standardisert av NIST i FIPS 198-1 og definert for internettprotokoller i IETF RFC 2104. Dette verktøyet beregner HMAC-er med nettleserens native Web Crypto API (`crypto.subtle.sign` med HMAC-algoritmen), som implementerer RFC 2104 korrekt i stedet for en håndskrevet JavaScript-versjon.

Hvorfor bruke det?

  • Signer API-forespørsler slik at mottakerserveren kan bekrefte at forespørselen kom fra en som innehar den delte hemmeligheten og ikke ble manipulert.
  • Bekreft webhook-nyttelaster (Stripe, GitHub, Shopify og lignende tjenester signerer alle webhook-innholdet sitt med HMAC-SHA256).
  • Generer autentiseringstokener eller engangskoder som er avhengige av en delt hemmelighet.
  • Sammenlign din egen HMAC-implementasjons resultat mot en kjent, korrekt referanseverdi.
  • 100 % lokalt: den hemmelige nøkkelen og meldingen din forlater aldri nettleseren, så det er trygt å teste ekte hemmeligheter.

Slik bruker du det

  1. Skriv inn din hemmelige nøkkel i feltet «Secret Key».
  2. Skriv inn meldingen du vil autentisere, i feltet «Message».
  3. Resultatene for HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 og HMAC-SHA512 genereres umiddelbart (kryss av «Uppercase output» hvis målsystemet ditt forventer store bokstaver).
  4. Klikk «Copy» ved siden av HMAC-en du trenger.

Eksempel

Inndata

Secret Key: key
Message: The quick brown fox jumps over the lazy dog

Resultat

HMAC-SHA256: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA1: de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

Dette er en standard publisert testvektor: med nøkkelen «key» og akkurat denne meldingen produserer HMAC-SHA256 og HMAC-SHA1 alltid disse verdiene i enhver korrekt implementasjon, så du kan verifisere dette verktøyets resultat uavhengig.

HMAC mot vanlig hash: når trenger du en nøkkel

Det avgjørende spørsmålet er: trenger du å bevise hvem som opprettet dette sammendraget, eller bare at innholdet ikke er endret? Hvis en offentlig sjekksum er nok — for å verifisere at en nedlastet fil samsvarer med det utgiveren oppga, eller for å deduplisere poster — fungerer en vanlig hash, og hvem som helst kan sjekke den, uten nøkkel. Hvis du trenger å bevise at sammendraget bare kunne vært produsert av noen som har en bestemt hemmelighet — autentisere en API-kaller, stole på avsenderen av en webhook — trenger du HMAC, fordi en vanlig hash gir en angriper uten hemmelighet samme mulighet til å forfalske et gyldig sammendrag som den ekte avsenderen har.

Multi-Algorithm Hash Generator · JWT Decoder · MD5 Generator

Sammenligning av de fire HMAC-algoritmene

Alle fire bruker samme HMAC-konstruksjon fra RFC 2104, og skiller seg bare i den underliggende hash-funksjonen og dermed lengden på resultatet.

AlgoritmeResultatstørrelseTypisk bruk
HMAC-SHA1160-bit (40 heksadesimale tegn)Eldre API-er, eldre OAuth 1.0a-signaturer
HMAC-SHA256256-bit (64 heksadesimale tegn)API-forespørselsignering, JWT HS256, webhook-verifisering
HMAC-SHA384384-bit (96 heksadesimale tegn)Signaturer med høyere sikkerhet der lengre resultat kreves
HMAC-SHA512512-bit (128 heksadesimale tegn)Sammendrag med maksimal lengde for høysikkerhetsapplikasjoner

Vanlige bruksområder

  • Signering av utgående API-forespørsler med en delt hemmelighet slik at serveren kan bekrefte den kallendes identitet.
  • Bekreftelse av innkommende webhook-nyttelaster (Stripe-Signature, GitHub X-Hub-Signature-256 og lignende headere bruker alle HMAC-SHA256).
  • Generering og validering av signaturdelen av en JWT signert med HS256/HS384/HS512.
  • Testing av at din server- eller klientsidens HMAC-implementasjon samsvarer med forventet resultat før den tas i bruk.

Ofte stilte spørsmål

Hva er HMAC?

HMAC (Hash-based Message Authentication Code) kombinerer en hemmelig nøkkel med en melding ved hjelp av en hash-funksjon for å produsere et sammendrag som beviser både meldingens integritet og at avsenderen har nøkkelen. Den er definert i NIST FIPS 198-1 og IETF RFC 2104.

Hva er forskjellen mellom HMAC og en vanlig hash?

En vanlig hash (SHA-256, MD5 osv.) tar bare en melding som input — hvem som helst kan beregne den, så den beviser bare at meldingen ikke er ødelagt, ikke hvem som sendte den. En HMAC tar en melding pluss en hemmelig nøkkel: hvis du trenger å bevise at en melding kom fra noen som har en bestemt hemmelighet (en API-signatur, en webhook-avsender), trenger du HMAC. Hvis du bare trenger å sjekke at en fil eller melding ikke er endret og ikke bryr deg om å bevise forfatterskap, er en vanlig hash nok.

Sendes den hemmelige nøkkelen min til en server?

Nei. Dette verktøyet beregner HMAC-en helt og holdent i nettleseren din ved hjelp av Web Crypto API. Nøkkelen og meldingen din overføres aldri noe sted — du kan trygt teste ekte produksjonshemmeligheter.

Hvilken algoritme bør jeg bruke — SHA-1, SHA-256, SHA-384 eller SHA-512?

Bruk HMAC-SHA256 med mindre et spesifikt system krever noe annet — det er den de facto standarden for API-signering (brukt av AWS, Stripe, GitHub-webhooks og de fleste moderne API-er) og gir en solid sikkerhetsmargin. HMAC-SHA1 er fortsatt vanlig i eldre systemer (som eldre OAuth 1.0a-implementasjoner), men den underliggende hashen til SHA-1 anses som svakere; HMAC-SHA384/512 brukes der lengre output eller ekstra sikkerhetsmargin spesifikt kreves.

Er HMAC-SHA1 usikker, siden vanlig SHA-1 er knekt?

Kollisjonsangrepene i 2017 knekte SHA-1 som en vanlig hash-funksjon, men HMAC-SHA1 anses fortsatt som kryptografisk solid fordi HMAC-ens sikkerhet ikke er avhengig av kollisjonsmotstand på samme måte. Likevel bør du foretrekke HMAC-SHA256 eller høyere for nye systemer — det er ingen praktisk ulempe, og det unngår spørsmålet helt.

Hva er vanlige praktiske bruksområder for HMAC?

Signering av REST API-forespørsler slik at en server kan bekrefte at den som kaller har den delte API-hemmeligheten; bekreftelse av webhook-nyttelaster fra tjenester som Stripe, GitHub og Shopify slik at du vet at en forespørsel virkelig kom fra dem og ikke er forfalsket; generering av tidsbaserte engangspassord (TOTP/HOTP) for topartsautentisering; og signering av JWT-tokener med HS256/HS384/HS512-algoritmene.

Relaterte verktøy