tigtools

Generátor HMAC

Vypočítejte kód pro ověření autenticity zprávy s klíčem (HMAC) pro zprávu a tajný klíč nebo zkontrolujte obdržený podpis. Klíč i zpráva zůstávají ve vašem prohlížeči.

Běží ve vašem prohlížeči Bez registrace

Klíč a zpráva se zpracovávají pouze v této záložce prohlížeče a nikam se neodesílají. Přesto nevkládejte živá produkční tajemství na sdíleném nebo nedůvěryhodném počítači.
Formát klíče

Podepisuje se jako UTF-8 přesně podle zadání. Koncová mezera nebo zalomení řádku změní výsledek.

Výstup

Vložte podpis v hex formátu (malá či velká písmena) nebo Base64 a porovnejte ho s výsledkem výše.

Jak používat

  1. Zadejte tajný klíč a zvolte, zda jde o prostý text, nebo hex bajty.
  2. Vložte zprávu, například payload webhooku přesně tak, jak byl přijat.
  3. Zvolte algoritmus a výstupní kódování, které používá vaše služba; HMAC se při psaní průběžně aktualizuje.
  4. Pro kontrolu podpisu vložte podpis do pole pro ověření a sledujte, zda se zobrazí „Shoda“.

Jak to funguje

HMAC (RFC 2104) kombinuje tajný klíč s hashovací funkcí a vytvoří podpis, který může vytvořit pouze někdo, kdo zná klíč. Služby, jako jsou webhooky a podepsané API požadavky, odesílají s každou zprávou HMAC, aby příjemce mohl ověřit, že je zpráva pravá a nezměněná.

Tento nástroj používá Web Crypto API vašeho prohlížeče (crypto.subtle.importKey and sign) a je ověřen proti testovacím vektorům RFC 4231 a RFC 2202. Textový klíč a zpráva se kódují jako UTF-8. Hex klíč se dekóduje na surové bajty; mezery, dvojtečky a úvodní 0x se ignorují. HMAC-SHA-256 je nejběžnější volba; HMAC-SHA-1 je jako MAC stále považován za bezpečný, ale používají ho hlavně starší API.

Pokud se váš podpis neshoduje, zkontrolujte údaje, které se nejčastěji liší: přesné bajty zprávy (mnoho poskytovatelů webhooků podepisuje surové tělo, nikoli přeformátovaný JSON), časové razítko nebo prefix, který poskytovatel přidává k podepisovanému řetězci, zda je klíč použit jako text, nebo je třeba ho nejprve dekódovat z hex nebo Base64, a zda je očekávaný podpis v hex nebo Base64 a obsahuje prefix jako „sha256=“, který byste měli před porovnáním odstranit.

Příklady

Testovací případ RFC 4231

Klíč „Jefe“ (text), zpráva „what do ya want for nothing?“ a HMAC-SHA-256 dají 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Pro načtení použijte „Vyzkoušet příklad“.

Ověření podpisu webhooku

Poskytovatel s každým požadavkem odesílá hlavičku X-Signature: sha256=…. Vložte surové tělo požadavku jako zprávu, svůj tajný klíč webhooku jako klíč, vyberte HMAC-SHA-256 a Hex a poté vložte hodnotu za „sha256=“ do pole pro ověření.

Klíč kódovaný v hex

Některé systémy vydávají klíče jako hex řetězce, například 0b0b0b…. Zvolte jako formát klíče Hex, aby nástroj podepisoval dekódovanými bajty; když budete stejný řetězec považovat za text, dostanete úplně jiný výsledek.

Časté dotazy

Jaký je rozdíl mezi HMAC a běžným hashem?

Běžný hash, jako je SHA-256, může ze zprávy spočítat kdokoli. HMAC navíc závisí na tajném klíči, takže ho může vytvořit nebo ověřit jen ten, kdo klíč zná. To dokazuje, že zpráva pochází od držitele klíče a nebyla změněna.

Proč se můj HMAC neshoduje s tím, který mi vrací server?

Vstupní bajty se téměř vždy liší: konce řádků, mezery, pořadí klíčů v JSON, kódování znaků nebo klíč, který je třeba dekódovat z hex nebo Base64. Porovnávejte také stejné kódování (hex versus Base64) a odstraňte předpony jako „sha256=“.

Odesílá se můj tajný klíč někam?

Ne. Klíč a zpráva se používají pouze prostřednictvím Web Crypto API na této kartě prohlížeče. Nikam se nenahrávají, neukládají se a nejsou zahrnuty do analytiky.

Je HMAC-SHA-1 stále bezpečný?

Kolize SHA-1 přímo nenarušují HMAC-SHA-1 a ten je kvůli kompatibilitě stále přijímán. Pro nové systémy používejte HMAC-SHA-256 nebo silnější.

Soukromí

Klíč, zpráva a výsledek existují pouze na této kartě prohlížeče. Nic se nenahrává, neukládá ani neodesílá do analytických služeb; zaznamenává se pouze anonymní událost, že byl nástroj použit.