Čo je tento nástroj?
HMAC znamená Hash-based Message Authentication Code. Kombinuje tajný kľúč so správou a štandardnou hašovacou funkciou (napríklad SHA-256), aby vytvoril výťah s pevnou dĺžkou. Ktokoľvek s rovnakým kľúčom a správou vypočíta presne rovnaký HMAC — no bez kľúča je výpočtovo neuskutočniteľné vytvoriť platný HMAC pre správu, aj keď poznáte použitý hašovací algoritmus.
To je hlavný rozdiel oproti obyčajnému hashu: obyčajný hash (MD5, SHA-256 atď.) prijíma na vstupe iba správu, takže ho môže vypočítať ktokoľvek a nedokazuje nič o tom, kto ho vytvoril. HMAC prijíma správu *a* tajný kľúč, takže platný HMAC dokazuje, že odosielateľ vlastnil tajomstvo — je to autentifikačný mechanizmus, nielen kontrola integrity.
HMAC je formálne štandardizovaný NIST-om v FIPS 198-1 a definovaný pre internetové protokoly v IETF RFC 2104. Tento nástroj počíta HMAC pomocou natívneho Web Crypto API vášho prehliadača (`crypto.subtle.sign` s algoritmom HMAC), ktoré správne implementuje RFC 2104, namiesto ručne napísanej verzie v JavaScripte.
Prečo ho používať?
- Podpisujte API požiadavky, aby prijímajúci server mohol overiť, že požiadavka pochádza od držiteľa zdieľaného tajomstva a nebola pozmenená.
- Overujte payloady webhookov (Stripe, GitHub, Shopify a podobné služby podpisujú telá svojich webhookov pomocou HMAC-SHA256).
- Generujte autentifikačné tokeny alebo jednorazové kódy, ktoré závisia od zdieľaného tajomstva.
- Porovnajte výstup vlastnej implementácie HMAC so známou správnou referenčnou hodnotou.
- 100 % lokálne: váš tajný kľúč a správa nikdy neopustia prehliadač, takže je bezpečné testovať skutočné tajomstvá.
Ako sa používa
- Zadajte svoj tajný kľúč do poľa „Secret Key“.
- Zadajte správu, ktorú chcete autentifikovať, do poľa „Message“.
- Výsledky HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 a HMAC-SHA512 sa generujú okamžite (zaškrtnite „Uppercase output“, ak váš cieľový systém očakáva veľké písmená).
- Kliknite na „Copy“ vedľa HMAC, ktorý potrebujete.
Príklad
Vstup
Secret Key: key
Message: The quick brown fox jumps over the lazy dogVýstup
HMAC-SHA256: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA1: de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9Toto je štandardný publikovaný testovací vektor: s kľúčom „key“ a touto presnou správou HMAC-SHA256 a HMAC-SHA1 vždy produkujú tieto hodnoty v akejkoľvek správnej implementácii, takže si môžete výstup tohto nástroja nezávisle overiť.
HMAC vs obyčajný hash: kedy potrebujete kľúč
Rozhodujúca otázka znie: potrebujete dokázať, kto vytvoril tento výťah, alebo iba to, že sa obsah nezmenil? Ak stačí verejný kontrolný súčet — overenie, že stiahnutý súbor zodpovedá tomu, čo uviedol vydavateľ, deduplikácia záznamov — funguje obyčajný hash a ktokoľvek si ho môže overiť bez kľúča. Ak potrebujete dokázať, že výťah mohol vytvoriť iba niekto, kto vlastní konkrétne tajomstvo — autentifikácia volajúceho API, dôvera odosielateľovi webhooku — potrebujete HMAC, pretože obyčajný hash dáva útočníkovi bez tajomstva rovnakú schopnosť sfalšovať platný výťah ako skutočnému odosielateľovi.
→ Multi-Algorithm Hash Generator · JWT Decoder · MD5 Generator
Porovnanie štyroch algoritmov HMAC
Všetky štyri používajú rovnakú konštrukciu HMAC z RFC 2104, líšia sa iba podkladovou hašovacou funkciou, a teda dĺžkou výstupu.
| Algoritmus | Veľkosť výstupu | Typické použitie |
|---|---|---|
| HMAC-SHA1 | 160 bitov (40 hex znakov) | Staršie API, staršie podpisy OAuth 1.0a |
| HMAC-SHA256 | 256 bitov (64 hex znakov) | Podpisovanie API požiadaviek, JWT HS256, overovanie webhookov |
| HMAC-SHA384 | 384 bitov (96 hex znakov) | Podpisy s vyššou úrovňou zabezpečenia, kde je potrebný dlhší výstup |
| HMAC-SHA512 | 512 bitov (128 hex znakov) | Výťahy s maximálnou dĺžkou pre aplikácie s vysokou bezpečnosťou |
Bežné prípady použitia
- Podpisovanie odchádzajúcich API požiadaviek zdieľaným tajomstvom, aby server mohol overiť identitu volajúceho.
- Overovanie prichádzajúcich payloadov webhookov (hlavičky Stripe-Signature, GitHub X-Hub-Signature-256 a podobné používajú všetky HMAC-SHA256).
- Generovanie a validácia podpisovej časti JWT podpísaného pomocou HS256/HS384/HS512.
- Testovanie, že vaša serverová alebo klientská implementácia HMAC zodpovedá očakávanému výstupu pred jej nasadením.
Časté otázky
Čo je HMAC?
HMAC (Hash-based Message Authentication Code) kombinuje tajný kľúč so správou pomocou hašovacej funkcie a vytvára výťah, ktorý dokazuje integritu správy aj to, že odosielateľ vlastní kľúč. Je definovaný v NIST FIPS 198-1 a IETF RFC 2104.
Aký je rozdiel medzi HMAC a obyčajným hashom?
Obyčajný hash (SHA-256, MD5 atď.) prijíma na vstupe iba správu — môže ho vypočítať ktokoľvek, takže dokazuje iba to, že správa nebola poškodená, nie kto ju odoslal. HMAC prijíma správu plus tajný kľúč: ak potrebujete dokázať, že správa pochádza od niekoho, kto vlastní konkrétne tajomstvo (API podpis, odosielateľ webhooku), potrebujete HMAC. Ak potrebujete iba skontrolovať, že sa súbor alebo správa nezmenili, a nezáleží vám na dokázaní autorstva, stačí obyčajný hash.
Je môj tajný kľúč odosielaný na server?
Nie. Tento nástroj počíta HMAC úplne vo vašom prehliadači pomocou Web Crypto API. Váš kľúč a správa sa nikam neprenášajú — môžete bezpečne testovať skutočné produkčné tajomstvá.
Ktorý algoritmus by som mal použiť — SHA-1, SHA-256, SHA-384 alebo SHA-512?
Použite HMAC-SHA256, pokiaľ konkrétny systém nevyžaduje inak — je to de facto štandard na podpisovanie API (používajú ho AWS, Stripe, webhooky GitHubu a väčšina moderných API) a ponúka silnú bezpečnostnú rezervu. HMAC-SHA1 je stále bežný v starších systémoch (napríklad v starších implementáciách OAuth 1.0a), no podkladový hash SHA-1 sa považuje za slabší; HMAC-SHA384/512 sa používajú tam, kde je špecificky potrebný dlhší výstup alebo dodatočná bezpečnostná rezerva.
Je HMAC-SHA1 nebezpečný, keďže obyčajný SHA-1 je prelomený?
Kolízne útoky z roku 2017 prelomili SHA-1 ako obyčajnú hašovaciu funkciu, no HMAC-SHA1 sa stále považuje za kryptograficky spoľahlivý, pretože bezpečnosť HMAC nezávisí od odolnosti proti kolíziám rovnakým spôsobom. Napriek tomu pre nové systémy uprednostnite HMAC-SHA256 alebo vyšší — nemá to žiadnu praktickú nevýhodu a úplne sa tým vyhnete otázke.
Aké sú bežné reálne použitia HMAC?
Podpisovanie REST API požiadaviek, aby server mohol overiť, že volajúci vlastní zdieľané API tajomstvo; overovanie payloadov webhookov od služieb ako Stripe, GitHub a Shopify, aby ste vedeli, že požiadavka skutočne pochádza od nich a nebola sfalšovaná; generovanie časovo založených jednorazových hesiel (TOTP/HOTP) pre dvojfaktorovú autentifikáciu; a podpisovanie JWT tokenov algoritmami HS256/HS384/HS512.