Jak používat
- Zadejte tajný klíč a zvolte, zda jde o prostý text, nebo hex bajty.
- Vložte zprávu, například payload webhooku přesně tak, jak byl přijat.
- Zvolte algoritmus a výstupní kódování, které používá vaše služba; HMAC se při psaní průběžně aktualizuje.
- 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.