CodeKitHub
Kódovacie nástroje

Generátor HMAC

Naposledy aktualizované:

Tento nástroj vypočíta HMAC (Hash-based Message Authentication Code) z tajného kľúča a správy pomocou SHA-1, SHA-256, SHA-384 alebo SHA-512 ako podkladovej hašovacej funkcie. Na rozdiel od obyčajného hashu vyžaduje HMAC zdieľaný tajný kľúč, takže dokazuje, že správa pochádza od niekoho, kto tento kľúč vlastní, a že nebola počas prenosu zmenená — presne preto API používajú HMAC na podpisovanie požiadaviek a webhooky ho používajú na overenie odosielateľa payloadu. Všetko beží lokálne prostredníctvom vstavaného Web Crypto API vášho prehliadača; váš tajný kľúč a správa sa nikdy neodosielajú na žiadny server.

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

Č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

  1. Zadajte svoj tajný kľúč do poľa „Secret Key“.
  2. Zadajte správu, ktorú chcete autentifikovať, do poľa „Message“.
  3. 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á).
  4. Kliknite na „Copy“ vedľa HMAC, ktorý potrebujete.

Príklad

Vstup

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

Výstup

HMAC-SHA256: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA1: de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

Toto 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.

AlgoritmusVeľkosť výstupuTypické použitie
HMAC-SHA1160 bitov (40 hex znakov)Staršie API, staršie podpisy OAuth 1.0a
HMAC-SHA256256 bitov (64 hex znakov)Podpisovanie API požiadaviek, JWT HS256, overovanie webhookov
HMAC-SHA384384 bitov (96 hex znakov)Podpisy s vyššou úrovňou zabezpečenia, kde je potrebný dlhší výstup
HMAC-SHA512512 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.

Súvisiace nástroje