HMAC (Hash-based Message Authentication Code) to szeroko stosowana technologia uwierzytelniania wiadomości zdefiniowana w RFC 2104. HMAC przetwarza klucz razem z wiadomością przez funkcję haszującą, aby wygenerować podpis o stałej długości. W przeciwieństwie do zwykłych haszy, HMAC wymaga znajomości klucza do wygenerowania lub zweryfikowania podpisu, gwarantując zarówno integralność wiadomości, jak i autentyczność.
**HMAC jest fundamentem nowoczesnego bezpieczeństwa API**. Stripe, GitHub, Shopify, Slack i Twilio używają HMAC-SHA256 do podpisywania zdarzeń webhook, zapewniając, że żądania rzeczywiście pochodzą z platformy. AWS używa HMAC-SHA256 do podpisywania żądań Signature V4. Algorytm HS256 JWT to zasadniczo HMAC-SHA256. Zrozumienie HMAC to pierwszy krok do opanowania bezpieczeństwa API.
**Różne platformy mają różne formaty podpisów**: format Stripe to `t=timestamp,v1=hex_signature`, podpisujący `timestamp.payload`; GitHub używa `X-Hub-Signature-256` z formatem `sha256=hex_signature`; Shopify używa `X-Shopify-Hmac-Sha256` z wartością zakodowaną w Base64. To narzędzie obsługuje automatyczne parsowanie i weryfikację tych popularnych formatów.
**Dlaczego weryfikacja podpisu nie powiodła się?** Najczęstszą przyczyną jest niedopasowanie formatu wiadomości: platforma może podpisywać `timestamp.payload` zamiast surowej treści wiadomości; lub wiadomość zawiera dodatkowe znaki nowej linii; lub podpis zawiera prefiks (jak `sha256=`), który trzeba usunąć. Sprawdź dokładnie dokumentację platformy i porównaj za pomocą surowej wartości szesnastkowej.
To narzędzie używa natywnej **Web Crypto API** przeglądarki (SubtleCrypto) do obliczeń HMAC — tej samej biblioteki kryptograficznej, która napędza HTTPS i TLS. Wszystkie obliczenia odbywają się lokalnie; klucze i wiadomości nigdy nie są wysyłane do żadnego serwera. Otwórz panel Network w Narzędziach Deweloperskich przeglądarki, aby zweryfikować, że nie są wykonywane żadne zewnętrzne żądania.