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

## Č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.

Vaše reklama zde?

[Napište nám](mailto:hi@dennn.is?subject=Inzerce%20na%20OneClick%20Pro)

[Reklama Sada pluginů připravená pro agenty pro WordPress.](https://sleekwp.com/?ref=oneclickpro)
