Što je ovaj alat?
HMAC znači Hash-based Message Authentication Code. Kombinira tajni ključ s porukom i standardnom hash funkcijom (poput SHA-256) kako bi proizveo digest fiksne duljine. Svatko tko ima isti ključ i poruku izračunat će potpuno isti HMAC — ali bez ključa je računski nemoguće proizvesti valjan HMAC za poruku, čak i ako se zna koji se hash algoritam koristi.
To je ključna razlika u odnosu na obični hash: obični hash (MD5, SHA-256 itd.) kao ulaz uzima samo poruku, pa ga svatko može izračunati i on ne dokazuje ništa o tome tko ga je stvorio. HMAC kao ulaz uzima poruku *i* tajni ključ, pa valjan HMAC dokazuje da je pošiljatelj posjedovao tajnu — to je mehanizam autentikacije, a ne samo provjera integriteta.
HMAC je formalno standardiziran od strane NIST-a u dokumentu FIPS 198-1 i definiran za internetske protokole u IETF RFC 2104. Ovaj alat izračunava HMAC-ove koristeći izvorni Web Crypto API vašeg preglednika (`crypto.subtle.sign` s HMAC algoritmom), koji ispravno implementira RFC 2104 umjesto ručno napisane JavaScript verzije.
Zašto ga koristiti?
- Potpisujte API zahtjeve kako bi poslužitelj primatelj mogao provjeriti da zahtjev dolazi od posjednika dijeljene tajne i da nije mijenjan.
- Provjerite sadržaje webhookova (Stripe, GitHub, Shopify i slične usluge potpisuju tijela webhookova pomoću HMAC-SHA256).
- Generirajte autentikacijske tokene ili jednokratne kodove koji ovise o dijeljenoj tajni.
- Usporedite izlaz vlastite implementacije HMAC-a s poznatom, ispravnom referentnom vrijednošću.
- 100% lokalno: vaš tajni ključ i poruka nikada ne napuštaju preglednik, pa je sigurno testirati stvarne tajne.
Kako ga koristiti
- Unesite svoj tajni ključ u polje "Secret Key".
- Unesite poruku koju želite autenticirati u polje "Message".
- Rezultati HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 i HMAC-SHA512 generiraju se trenutno (označite "Uppercase output" ako vaš ciljni sustav očekuje velika slova).
- Kliknite "Copy" pored HMAC-a koji vam treba.
Primjer
Ulaz
Secret Key: key
Message: The quick brown fox jumps over the lazy dogIzlaz
HMAC-SHA256: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA1: de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9Ovo je standardni objavljeni testni vektor: s ključem "key" i ovom točnom porukom, HMAC-SHA256 i HMAC-SHA1 uvijek proizvode ove vrijednosti u bilo kojoj ispravnoj implementaciji, tako da možete neovisno provjeriti izlaz ovog alata.
HMAC nasuprot običnom hashu: kada vam treba ključ
Odlučujuće je pitanje: trebate li dokazati tko je stvorio ovaj digest, ili samo da se sadržaj nije promijenio? Ako je javna kontrolna suma dovoljna — provjera da preuzeta datoteka odgovara onome što je izdavač naveo, deduplikacija zapisa — obični hash funkcionira i svatko ga može provjeriti, bez ključa. Ako trebate dokazati da digest može proizvesti samo netko tko posjeduje određenu tajnu — autentikacija API pozivatelja, povjerenje u pošiljatelja webhooka — trebate HMAC, jer obični hash daje napadaču bez tajne istu mogućnost krivotvorenja valjanog digesta kao i pravom pošiljatelju.
→ Generator hasheva s više algoritama · JWT dekoder · MD5 generator
Usporedba četiri HMAC algoritma
Sva četiri koriste istu HMAC konstrukciju iz RFC 2104, razlikujući se samo po temeljnoj hash funkciji, a time i po duljini izlaza.
| Algoritam | Veličina izlaza | Tipična upotreba |
|---|---|---|
| HMAC-SHA1 | 160-bitni (40 hex znakova) | Stariji API-ji, starije OAuth 1.0a potpise |
| HMAC-SHA256 | 256-bitni (64 hex znaka) | Potpisivanje API zahtjeva, JWT HS256, provjera webhookova |
| HMAC-SHA384 | 384-bitni (96 hex znakova) | Potpisi s višom razinom pouzdanosti gdje je potreban dulji izlaz |
| HMAC-SHA512 | 512-bitni (128 hex znakova) | Digesti maksimalne duljine za visoko sigurnosne primjene |
Uobičajeni slučajevi upotrebe
- Potpisivanje odlaznih API zahtjeva dijeljenom tajnom kako bi poslužitelj mogao provjeriti identitet pozivatelja.
- Provjera dolaznih sadržaja webhookova (Stripe-Signature, GitHub X-Hub-Signature-256 i slična zaglavlja koriste HMAC-SHA256).
- Generiranje i validacija dijela potpisa JWT-a potpisanog s HS256/HS384/HS512.
- Testiranje da implementacija HMAC-a na strani poslužitelja ili klijenta odgovara očekivanom izlazu prije primjene.
Često postavljana pitanja
Što je HMAC?
HMAC (Hash-based Message Authentication Code) kombinira tajni ključ s porukom pomoću hash funkcije kako bi proizveo digest koji dokazuje i integritet poruke i da pošiljatelj posjeduje ključ. Definiran je u NIST FIPS 198-1 i IETF RFC 2104.
Koja je razlika između HMAC-a i običnog hasha?
Obični hash (SHA-256, MD5 itd.) kao ulaz uzima samo poruku — svatko ga može izračunati, pa dokazuje samo da poruka nije oštećena, ne i tko ju je poslao. HMAC kao ulaz uzima poruku i tajni ključ: ako trebate dokazati da je poruka došla od nekoga tko posjeduje određenu tajnu (API potpis, pošiljatelj webhooka), trebate HMAC. Ako samo trebate provjeriti da se datoteka ili poruka nije promijenila i ne zanima vas dokazivanje autorstva, dovoljan je obični hash.
Šalje li se moj tajni ključ na poslužitelj?
Ne. Ovaj alat izračunava HMAC u potpunosti u vašem pregledniku koristeći Web Crypto API. Vaš ključ i poruka nikada se nikamo ne prenose — možete sigurno testirati stvarne produkcijske tajne.
Koji algoritam trebam koristiti — SHA-1, SHA-256, SHA-384 ili SHA-512?
Koristite HMAC-SHA256 osim ako specifičan sustav ne zahtijeva drugačije — to je de facto standard za potpisivanje API-ja (koriste ga AWS, Stripe, GitHub webhookovi i većina modernih API-ja) i nudi snažnu sigurnosnu marginu. HMAC-SHA1 još je uvijek uobičajen u starijim sustavima (poput starijih implementacija OAuth 1.0a), ali temeljni hash SHA-1 smatra se slabijim; HMAC-SHA384/512 koriste se kada je posebno potreban dulji izlaz ili dodatna sigurnosna margina.
Je li HMAC-SHA1 nesiguran jer je obični SHA-1 probijen?
Napadi kolizijom iz 2017. probili su SHA-1 kao običnu hash funkciju, ali HMAC-SHA1 se i dalje smatra kriptografski ispravnim jer sigurnost HMAC-a ne ovisi o otpornosti na kolizije na isti način. Ipak, za nove sustave preferirajte HMAC-SHA256 ili viši — nema praktičnog nedostatka, a time se izbjegava cijelo pitanje.
Koje su uobičajene stvarne primjene HMAC-a?
Potpisivanje REST API zahtjeva kako bi poslužitelj mogao provjeriti da pozivatelj posjeduje dijeljenu API tajnu; provjera sadržaja webhookova od usluga poput Stripea, GitHuba i Shopifyja kako biste znali da zahtjev doista dolazi od njih i da nije krivotvoren; generiranje vremenski ograničenih jednokratnih lozinki (TOTP/HOTP) za dvofaktorsku autentikaciju; i potpisivanje JWT tokena algoritmima HS256/HS384/HS512.