Utvecklarverktyg

HMAC-generator

Signera ett meddelande med en hemlig nyckel. Inget överförs.

HMAC-generator Körs på din enhet
  • Körs i din webbläsare — din text skickas aldrig någonstans
  • Ingen registrering, inga kvoter, gratis att använda så ofta du vill

Så fungerar det

En HMAC bevisar två saker på en gång: att ett meddelande inte har ändrats och att den som skapade det har den delade hemligheten. Den används för att signera webhooks, API-anrop och nedladdningslänkar på största delen av webben.

Skiljer sig från en vanlig hash på den punkt som spelar roll

Vem som helst kan beräkna SHA-256 för ett meddelande, så en vanlig hash säger ingenting om vem som har skapat den – ändra meddelandet, räkna om hashen, och ingen kan se skillnaden. En HMAC väver in en hemlig nyckel i beräkningen, så den kan inte räknas om utan nyckeln. Det är hela poängen, och det är därför webhook-signaturer använder HMAC i stället för en hash.

Verifiera på ett säkert sätt

När du kontrollerar en HMAC på en server ska du jämföra den med en funktion som tar konstant tid – crypto.timingSafeEqual i Node, hash_equals i PHP. Ett vanligt == returnerar så fort två byte skiljer sig åt, och tiden det tar avslöjar hur stor del av signaturen som var rätt, vilket med tålamod räcker för att förfalska en. Det är en verklig attack, inte en teoretisk.

Vilken algoritm

SHA-256 om inget annat anges. SHA-1 finns med eftersom många äldre API:er fortfarande kräver HMAC-SHA-1, och HMAC-SHA-1 har inte knäckts på samma sätt som vanlig SHA-1 – men det finns ingen anledning att välja den för något nytt.

Hex eller Base64

Det handlar enbart om vad den andra sidan förväntar sig. Hex är dubbelt så långt och lättare att läsa, medan Base64 är mer kompakt och vanligt i HTTP-huvuden. Samma signatur visas i båda.

Din nyckel stannar här

Skapas med webbläsarens egen Web Crypto API. Nyckeln och meddelandet skickas aldrig någonstans, vilket är det enda ansvarsfulla sättet att erbjuda detta – ett signeringsverktyg som laddar upp din hemlighet har gett bort det som hemligheten skyddar.

Vanliga frågor

HMAC-generator – frågor

Hur skiljer sig HMAC från en hash?

En hash kan räknas om av vem som helst. En HMAC kräver den hemliga nyckeln, så den visar vem som har skapat den.

Vilken algoritm ska jag använda?

SHA-256 om inte ett API anger något annat. SHA-1 finns med för äldre system som fortfarande kräver den.

Ska jag välja hex eller Base64?

Det som den andra sidan förväntar sig. Båda visas för samma signatur.

Varför måste jämförelsen ta konstant tid?

En vanlig jämförelse avslutas vid den första avvikelsen, och tidsskillnaden avslöjar hur mycket som var rätt – tillräckligt för att förfalska en signatur.

Skickas min hemliga nyckel någonstans?

Nej. Allt körs i din webbläsare via Web Crypto API.