CodeKitHub
Kodningsverktyg

HMAC-generator

Senast uppdaterad:

Det här verktyget beräknar en HMAC (Hash-based Message Authentication Code) från en hemlig nyckel och ett meddelande, med SHA-1, SHA-256, SHA-384 eller SHA-512 som underliggande hashfunktion. Till skillnad från en vanlig hash kräver en HMAC en delad hemlig nyckel, så den bevisar att meddelandet kom från någon som innehar den nyckeln och inte ändrades under överföringen — precis därför använder API:er HMAC:er för att signera förfrågningar, och webhooks använder det för att verifiera avsändaren av en payload. Allt körs lokalt via din webbläsares inbyggda Web Crypto API; din hemliga nyckel och ditt meddelande skickas aldrig till någon server.

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

Vad är detta verktyg?

HMAC står för Hash-based Message Authentication Code. Den kombinerar en hemlig nyckel med ett meddelande och en standardhashfunktion (som SHA-256) för att producera ett sammandrag med fast längd. Alla med samma nyckel och meddelande beräknar exakt samma HMAC — men utan nyckeln är det beräkningsmässigt omöjligt att skapa en giltig HMAC för ett meddelande, även om du känner till vilken hashalgoritm som används.

Det är den avgörande skillnaden mot en vanlig hash: en vanlig hash (MD5, SHA-256 osv.) tar bara meddelandet som indata, så vem som helst kan beräkna den, och den bevisar ingenting om vem som skapade den. En HMAC tar meddelandet *och* en hemlig nyckel, så en giltig HMAC bevisar att avsändaren hade hemligheten — det är en autentiseringsmekanism, inte bara en integritetskontroll.

HMAC är formellt standardiserad av NIST i FIPS 198-1 och definierad för internetprotokoll i IETF RFC 2104. Det här verktyget beräknar HMAC:er med din webbläsares inbyggda Web Crypto API (`crypto.subtle.sign` med HMAC-algoritmen), som implementerar RFC 2104 korrekt istället för en handskriven JavaScript-version.

Varför använda det?

  • Signera API-förfrågningar så att den mottagande servern kan verifiera att förfrågan kom från någon som innehar den delade hemligheten och inte manipulerades.
  • Verifiera webhook-payloads (Stripe, GitHub, Shopify och liknande tjänster signerar alla sina webhook-innehåll med HMAC-SHA256).
  • Generera autentiseringstoken eller engångskoder som är beroende av en delad hemlighet.
  • Jämför din egen HMAC-implementations resultat med ett känt korrekt referensvärde.
  • 100 % lokalt: din hemliga nyckel och ditt meddelande lämnar aldrig webbläsaren, så det är säkert att testa riktiga hemligheter.

Så använder du det

  1. Ange din hemliga nyckel i fältet "Secret Key".
  2. Ange meddelandet du vill autentisera i fältet "Message".
  3. Resultaten för HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 och HMAC-SHA512 genereras omedelbart (kryssa i "Uppercase output" om ditt målsystem förväntar sig versaler).
  4. Klicka på "Copy" bredvid den HMAC du behöver.

Exempel

Inmatning

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

Resultat

HMAC-SHA256: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA1: de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

Det här är en standardpublicerad testvektor: med nyckeln "key" och exakt detta meddelande producerar HMAC-SHA256 och HMAC-SHA1 alltid dessa värden i varje korrekt implementation, så du kan verifiera det här verktygets resultat oberoende.

HMAC kontra vanlig hash: när behöver du en nyckel

Den avgörande frågan är: behöver du bevisa vem som skapade det här sammandraget, eller bara att innehållet inte har ändrats? Om en offentlig kontrollsumma räcker — för att verifiera att en nedladdad fil matchar det utgivaren angett, eller för att deduplicera poster — fungerar en vanlig hash och vem som helst kan kontrollera den, utan nyckel. Om du behöver bevisa att sammandraget bara kunde ha producerats av någon som innehar en specifik hemlighet — autentisera en API-anropare, lita på avsändaren av en webhook — behöver du HMAC, eftersom en vanlig hash ger en angripare utan hemlighet samma förmåga att förfalska ett giltigt sammandrag som den riktiga avsändaren.

Multi-Algorithm Hash Generator · JWT Decoder · MD5 Generator

Jämförelse av de fyra HMAC-algoritmerna

Alla fyra använder samma HMAC-konstruktion från RFC 2104, och skiljer sig bara åt i den underliggande hashfunktionen och därmed utdatalängden.

AlgoritmUtdatastorlekTypisk användning
HMAC-SHA1160-bitars (40 hex-tecken)Äldre API:er, äldre OAuth 1.0a-signaturer
HMAC-SHA256256-bitars (64 hex-tecken)Signering av API-förfrågningar, JWT HS256, webhook-verifiering
HMAC-SHA384384-bitars (96 hex-tecken)Signaturer med högre säkerhetsgrad där längre utdata krävs
HMAC-SHA512512-bitars (128 hex-tecken)Sammandrag med maximal längd för högsäkerhetsapplikationer

Vanliga användningsområden

  • Signera utgående API-förfrågningar med en delad hemlighet så att servern kan verifiera anroparens identitet.
  • Verifiera inkommande webhook-payloads (Stripe-Signature, GitHub X-Hub-Signature-256 och liknande headers använder alla HMAC-SHA256).
  • Generera och validera signaturdelen av en JWT signerad med HS256/HS384/HS512.
  • Testa att din server- eller klientsidiga HMAC-implementation matchar förväntad utdata innan den driftsätts.

Vanliga frågor

Vad är HMAC?

HMAC (Hash-based Message Authentication Code) kombinerar en hemlig nyckel med ett meddelande med hjälp av en hashfunktion för att producera ett sammandrag som bevisar både meddelandets integritet och att avsändaren innehar nyckeln. Den definieras i NIST FIPS 198-1 och IETF RFC 2104.

Vad är skillnaden mellan HMAC och en vanlig hash?

En vanlig hash (SHA-256, MD5 osv.) tar bara ett meddelande som indata — vem som helst kan beräkna den, så den bevisar bara att meddelandet inte är förvanskat, inte vem som skickade det. En HMAC tar ett meddelande plus en hemlig nyckel: om du behöver bevisa att ett meddelande kom från någon som innehar en specifik hemlighet (en API-signatur, en webhook-avsändare) behöver du HMAC. Om du bara behöver kontrollera att en fil eller ett meddelande inte har ändrats och inte bryr dig om att bevisa författarskap räcker en vanlig hash.

Skickas min hemliga nyckel till en server?

Nej. Det här verktyget beräknar HMAC:en helt och hållet i din webbläsare med Web Crypto API. Din nyckel och ditt meddelande överförs aldrig någonstans — du kan tryggt testa riktiga produktionshemligheter.

Vilken algoritm bör jag använda — SHA-1, SHA-256, SHA-384 eller SHA-512?

Använd HMAC-SHA256 om inte ett specifikt system kräver något annat — det är de facto-standarden för API-signering (används av AWS, Stripe, GitHub-webhooks och de flesta moderna API:er) och erbjuder en stark säkerhetsmarginal. HMAC-SHA1 är fortfarande vanligt i äldre system (som äldre OAuth 1.0a-implementationer), men den underliggande hashen i SHA-1 anses svagare; HMAC-SHA384/512 används där längre utdata eller extra säkerhetsmarginal specifikt krävs.

Är HMAC-SHA1 osäkert, eftersom vanlig SHA-1 är knäckt?

Kollisionsattackerna 2017 knäckte SHA-1 som en vanlig hashfunktion, men HMAC-SHA1 anses fortfarande kryptografiskt sund eftersom HMAC:s säkerhet inte är beroende av kollisionsresistens på samma sätt. Föredra ändå HMAC-SHA256 eller högre för nya system — det finns ingen praktisk nackdel, och det undviker frågan helt.

Vilka är vanliga verkliga användningsområden för HMAC?

Signera REST API-förfrågningar så att en server kan verifiera att den anropande parten innehar den delade API-hemligheten; verifiera webhook-payloads från tjänster som Stripe, GitHub och Shopify för att veta att en förfrågan verkligen kom från dem och inte förfalskades; generera tidsbaserade engångslösenord (TOTP/HOTP) för tvåfaktorsautentisering; och signera JWT-token med algoritmerna HS256/HS384/HS512.

Relaterade verktyg