CodeKitHub
Kódovací nástroje

Generátor HMAC

Naposledy aktualizováno:

Tento nástroj vypočítá HMAC (Hash-based Message Authentication Code) z tajného klíče a zprávy pomocí SHA-1, SHA-256, SHA-384 nebo SHA-512 jako podkladové hašovací funkce. Na rozdíl od obyčejného hashe vyžaduje HMAC sdílený tajný klíč, takže dokazuje, že zpráva pochází od někoho, kdo tento klíč vlastní, a nebyla při přenosu změněna — právě proto API používají HMAC k podepisování požadavků a webhooky k ověření odesílatele payloadu. Vše běží lokálně přes vestavěné Web Crypto API vašeho prohlížeče; váš tajný klíč a zpráva nejsou nikdy odeslány na žádný server.

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

Co je tento nástroj?

HMAC znamená Hash-based Message Authentication Code. Kombinuje tajný klíč se zprávou a standardní hašovací funkcí (jako SHA-256) a vytváří digest s pevnou délkou. Kdokoli se stejným klíčem a zprávou spočítá naprosto stejný HMAC — bez klíče je však výpočetně nemožné vytvořit platný HMAC pro danou zprávu, i když znáte použitý hašovací algoritmus.

To je klíčový rozdíl oproti obyčejnému hashi: obyčejný hash (MD5, SHA-256 atd.) přijímá jako vstup pouze zprávu, takže ho může spočítat kdokoli a nedokazuje nic o tom, kdo ho vytvořil. HMAC přijímá zprávu *a* tajný klíč, takže platný HMAC dokazuje, že odesílatel vlastnil tajemství — jde o autentizační mechanismus, nikoli jen kontrolu integrity.

HMAC je formálně standardizován NIST v FIPS 198-1 a definován pro internetové protokoly v IETF RFC 2104. Tento nástroj počítá HMAC pomocí nativního Web Crypto API vašeho prohlížeče (`crypto.subtle.sign` s algoritmem HMAC), které správně implementuje RFC 2104 namísto ručně psané JavaScriptové verze.

Proč ho používat?

  • Podepisování API požadavků, aby přijímající server mohl ověřit, že požadavek pochází od držitele sdíleného tajemství a nebyl pozměněn.
  • Ověřování webhook payloadů (Stripe, GitHub, Shopify a podobné služby podepisují těla webhooků pomocí HMAC-SHA256).
  • Generování autentizačních tokenů nebo jednorázových kódů závislých na sdíleném tajemství.
  • Porovnání výstupu vlastní implementace HMAC se známou správnou referenční hodnotou.
  • 100% lokální: váš tajný klíč a zpráva nikdy neopustí prohlížeč, takže je bezpečné testovat skutečná tajemství.

Jak se používá

  1. Zadejte svůj tajný klíč do pole „Tajný klíč“.
  2. Zadejte zprávu, kterou chcete autentizovat, do pole „Zpráva“.
  3. Výsledky HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 a HMAC-SHA512 se vygenerují okamžitě (zaškrtněte „Výstup velkými písmeny“, pokud cílový systém očekává velká písmena).
  4. Klikněte na „Kopírovat“ vedle požadovaného HMAC.

Příklad

Vstup

Tajný klíč: key
Zpráva: The quick brown fox jumps over the lazy dog

Výstup

HMAC-SHA256: f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
HMAC-SHA1: de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

Toto je standardní publikovaný testovací vektor: s klíčem „key“ a přesně touto zprávou vytvoří HMAC-SHA256 a HMAC-SHA1 vždy tyto hodnoty v jakékoli správné implementaci, takže výstup tohoto nástroje můžete nezávisle ověřit.

HMAC vs. obyčejný hash: kdy potřebujete klíč

Rozhodující otázka zní: potřebujete dokázat, kdo tento digest vytvořil, nebo jen že se obsah nezměnil? Pokud stačí veřejný kontrolní součet — ověření, že stažený soubor odpovídá tomu, co uvedl vydavatel, deduplikace záznamů — funguje obyčejný hash a kdokoli si ho může zkontrolovat bez klíče. Pokud potřebujete dokázat, že digest mohl vytvořit pouze někdo vlastnící konkrétní tajemství — autentizace volajícího API, důvěra v odesílatele webhooku — potřebujete HMAC, protože obyčejný hash dává útočníkovi bez tajemství stejnou schopnost padělat platný digest jako skutečnému odesílateli.

Multi-algoritmický generátor hashů · Dekodér JWT · Generátor MD5

Srovnání čtyř algoritmů HMAC

Všechny čtyři používají stejnou konstrukci HMAC z RFC 2104, liší se pouze podkladovou hašovací funkcí a tedy délkou výstupu.

AlgoritmusVelikost výstupuTypické použití
HMAC-SHA1160 bitů (40 hex znaků)Starší API, starší podpisy OAuth 1.0a
HMAC-SHA256256 bitů (64 hex znaků)Podepisování API požadavků, JWT HS256, ověřování webhooků
HMAC-SHA384384 bitů (96 hex znaků)Vysoce spolehlivé podpisy vyžadující delší výstup
HMAC-SHA512512 bitů (128 hex znaků)Digesty maximální délky pro vysoce bezpečné aplikace

Běžné případy použití

  • Podepisování odchozích API požadavků sdíleným tajemstvím, aby server mohl ověřit identitu volajícího.
  • Ověřování příchozích webhook payloadů (hlavičky Stripe-Signature, GitHub X-Hub-Signature-256 a podobné všechny používají HMAC-SHA256).
  • Generování a ověřování podpisové části JWT podepsaného pomocí HS256/HS384/HS512.
  • Testování, že vaše implementace HMAC na serveru nebo klientovi odpovídá očekávanému výstupu před nasazením.

Časté dotazy

Co je HMAC?

HMAC (Hash-based Message Authentication Code) kombinuje tajný klíč se zprávou pomocí hašovací funkce a vytváří digest, který dokazuje jak integritu zprávy, tak vlastnictví klíče odesílatelem. Je definován v NIST FIPS 198-1 a IETF RFC 2104.

Jaký je rozdíl mezi HMAC a obyčejným hashem?

Obyčejný hash (SHA-256, MD5 atd.) přijímá jako vstup pouze zprávu — může ho spočítat kdokoli, takže dokazuje jen to, že zpráva nebyla poškozena, nikoli kdo ji poslal. HMAC přijímá zprávu plus tajný klíč: pokud potřebujete dokázat, že zpráva pochází od někoho, kdo vlastní konkrétní tajemství (API podpis, odesílatel webhooku), potřebujete HMAC. Pokud jen potřebujete zkontrolovat, že se soubor nebo zpráva nezměnily, a autorství vás nezajímá, obyčejný hash stačí.

Je můj tajný klíč odesílán na server?

Ne. Tento nástroj počítá HMAC zcela ve vašem prohlížeči pomocí Web Crypto API. Váš klíč a zpráva se nikam nepřenášejí — můžete bezpečně testovat skutečná produkční tajemství.

Který algoritmus mám použít — SHA-1, SHA-256, SHA-384 nebo SHA-512?

Používejte HMAC-SHA256, pokud konkrétní systém nevyžaduje jinak — je to de facto standard pro podepisování API (používaný AWS, Stripe, GitHub webhooky a většinou moderních API) a nabízí silnou bezpečnostní rezervu. HMAC-SHA1 je stále běžný ve starších systémech (jako starší implementace OAuth 1.0a), ale podkladový hash SHA-1 je považován za slabší; HMAC-SHA384/512 se používají tam, kde je konkrétně vyžadován delší výstup nebo extra bezpečnostní rezerva.

Je HMAC-SHA1 nebezpečný, když je obyčejný SHA-1 prolomen?

Kolizní útoky z roku 2017 prolomily SHA-1 jako obyčejnou hašovací funkci, ale HMAC-SHA1 je stále považován za kryptograficky bezpečný, protože bezpečnost HMAC nezávisí na odolnosti proti kolizím stejným způsobem. Přesto pro nové systémy upřednostněte HMAC-SHA256 nebo vyšší — nemá to žádnou praktickou nevýhodu a zcela se tím vyhnete otázce.

Jaká jsou běžná reálná použití HMAC?

Podepisování REST API požadavků, aby server mohl ověřit, že volající vlastní sdílené API tajemství; ověřování webhook payloadů od služeb jako Stripe, GitHub a Shopify, abyste věděli, že požadavek skutečně pochází od nich a nebyl padělán; generování časově založených jednorázových hesel (TOTP/HOTP) pro dvoufaktorovou autentizaci; a podepisování JWT tokenů algoritmy HS256/HS384/HS512.

Související nástroje