Přejít k obsahu

Generátor HMAC-SHA256

Vytvořte podpis HMAC-SHA256 ze zprávy a tajného klíče. Nástroj obojí zakóduje jako UTF-8, použije konstrukci HMAC podle RFC 2104 s SHA-256 a vrátí značku o délce 256 bitů v hexadecimálním formátu nebo jako Base64. Vývojáři jej používají k ladění podpisů webhooků služeb jako Stripe, GitHub nebo Slack, k podepisování požadavků API a porovnávání výsledků s vlastním kódem. Klíč se nikdy nevrací ani nezaznamenává do protokolu.

Obnovit

Často kladené otázky

Co je HMAC-SHA256?

HMAC-SHA256 je kód pro ověřování zpráv vytvořený pomocí SHA-256 a tajného klíče, jak je definováno v RFC 2104. Správnou značku pro zprávu může vypočítat pouze ten, kdo zná klíč. Výsledek má 32 bajtů neboli 64 hexadecimálních znaků.

Jak ověřím podpis webhooku?

Vložte přesné nezměněné tělo požadavku jako zprávu a svůj podpisový tajný klíč jako klíč, pak výsledek porovnejte s hlavičkou podpisu. Mnoho služeb podepisuje kombinaci údajů, například časové razítko Stripe, tečku a tělo, proto sestavte zprávu podle jejich dokumentace. Změna jediného bajtu vytvoří jinou značku.

Existuje známý testovací vektor?

Testovací případ 2 z RFC 4231 používá klíč Jefe a zprávu what do ya want for nothing? a očekává hodnotu 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Tento nástroj vrací přesně tuto hodnotu.

Jak se kódují klíč a zpráva?

Obojí se zakóduje jako text UTF-8. Pokud je váš tajný klíč zadaný v hexadecimálním formátu nebo jako Base64, jak to dělají některé služby, bajty se liší od zobrazeného textu a klíč musíte nejprve dekódovat ve vlastním kódu. Mezery a zalomení řádků se započítávají v obou polích.

Ukládá se můj tajný klíč?

Ne. Klíč se použije pouze k výpočtu značky během požadavku. Není součástí odpovědi, nezaznamenává se do protokolu ani neukládá.

Může být klíč prázdný nebo velmi dlouhý?

HMAC přijímá klíče libovolné délky, včetně prázdného klíče. Klíče delší než 64 bajtů se nejprve zpracují pomocí SHA-256, jak stanovuje RFC. Pro skutečné použití zvolte náhodný klíč o délce alespoň 32 bajtů.

Mám zvolit hexadecimální formát, nebo Base64?

Použijte formát, který posílá druhá strana. GitHub a Stripe používají hexadecimální formát, zatímco Slack přidává před hexadecimální hodnotu v0= a mnoho systémů založených na AWS a JWT používá Base64. Oba formáty kódují stejných 32 bajtů.

Je HMAC-SHA256 totéž jako hash SHA-256 spojeného s klíčem a zprávou?

Ne. HMAC počítá hash zprávy dvakrát pomocí vnitřního a vnějšího klíče doplněného na požadovanou délku, což brání útokům prodloužením délky. Spojením klíče a zprávy a jednorázovým výpočtem hashe získáte jiný a méně bezpečný výsledek.

Jak mám v kódu porovnávat podpisy?

Použijte funkci pro porovnání s konstantní dobou běhu, například crypto.timingSafeEqual v Node.js nebo hmac.compare_digest v Pythonu. Běžné porovnání řetězců může odhalit informace o očekávané značce podle doby běhu.

Jak velká může být zpráva?

Zpráva a klíč mohou mít dohromady až 5 MiB textu. To stačí pro běžné datové části webhooků a požadavky API.

O OneClick Pro

OneClick Pro je bezplatná kolekce více než 150 webových nástrojů pro každodenní práci: převod obrázků a jednotek, formátování a ověřování kódu, kontrolu domén a SEO i práci s textem, daty a čísly. Každý nástroj funguje bez registrace či předplatného a zadané údaje se používají pouze k výpočtu výsledku a nikdy se neukládají. Používejte ji jako rychlou sadu nástrojů pro jednorázové úkoly nebo si uložte do záložek nástroje, na které se každý den spoléháte.