Generator HMAC
HMAC jest algorytmem stanowiącym podstawę większości podpisanych webhooków, nagłówków AWS Signature w wersji 4 oraz tokenów JWT HS256. Wpisz wiadomość i klucz tajny, wybierz rodzinę haszów – ten generator generuje wartość HMAC dokładnie zgodnie z wymogami RFC 2104, co jest przydatne do weryfikacji danych, które ma wysłać serwer backendowy, lub do powtórnego wygenerowania podpisu otrzymanego od interfejsu API.
Jak obliczyć HMAC
-
1
Wklej wiadomość
Dokładne bajty do podpisania – ładunek (payload) webhooka, żądanie kanoniczne lub dowolny ciąg znaków.
-
2
Wpisz klucz sekretny
Może być tekstem lub wartością szesnastkową (hex). Generator uzupełnia go lub haszuje do rozmiaru bloku zgodnie z RFC.
-
3
Wybierz algorytm haszowania
SHA-256 jest ustawieniem domyślnym; w celu zachowania zgodności ze starszymi systemami wybierz SHA-1, SHA-384, SHA-512 lub MD5.
-
4
Skopiuj podpis
Wynik to małe litery w formacie szesnastkowym (hex), gotowy do wklejenia do konfiguracji webhooka lub nagłówka autoryzacji.
HMAC od podszewki
HMAC opakuje prostą funkcję haszowania w strukturze z kluczem, co uniemożliwia falsyfikację podpisu bez odpowiedniego klucza.
Przepis RFC 2104
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
gdzie k' jest kluczem uzupełnionym do rozmiaru bloku haszowania, a opad = 0x5c repeated i ipad = 0x36 repeated to stałe wypełnienia.
Wybór algorytmu
| Algorytm | Rozmiar bloku | Długość wyniku | Rekomendowany do |
|---|---|---|---|
| HMAC-SHA-256 | 64 bajty | 32 bajty | Nowoczesny standard, podpisywanie webhooków |
| HMAC-SHA-384 | 128 bajtów | 48 bajtów | Podpisywanie API o wyższym poziomie bezpieczeństwa |
| HMAC-SHA-512 | 128 bajtów | 64 bajty | Tokeny o długim okresie trwałości |
| HMAC-SHA-1 | 64 bajty | 20 bajtów | Wersja starsza (AWS S3 v2, OAuth 1.0) |
| HMAC-MD5 | 64 bajty | 16 bajtów | Dostępne wyłącznie w wersjach starszych; unikaj jego stosowania w nowych aplikacjach |
Gdzie pojawia się HMAC
- Webhooki GitHub, Stripe, Shopify: nagłówki
X-Hub-Signature-256,Stripe-Signatureitd. - AWS Signature v4: łańcuch operacji HMAC-SHA256 wykonywany na żądaniu kanonicznym.
- JWT HS256: podpis tokena to
HMAC-SHA-256(header.payload, secret). - Tokeny resetowania hasła: HMAC złożony z user_id, terminu ważności oraz sekretu witryny.
Najczęstsze błędy
- Przesyłanie klucza zakodowanego szesnastkowo jako tekstu zamiast wcześniejszego zdekodowania go do bajtów.
- Podpisywanie niewłaściwych bajtów ładunku: niektóre webhooki podpisują surowe ciało żądania wraz z białymi znakami, inne zaś podpisują formę kanoniczną.
- Używanie
==w JavaScript lub Python do porównywania podpisów; zawsze stosuj porównanie odporne na ataki czasowe (timing-safe), aby zapobiec atakom czasowym.
Najczęściej zadawane pytania
Prawie zawsze dlatego, że bajty wiadomości się różnią. Podpisywanie ciała danych po sparsowaniu z formatu JSON powoduje zmiany białych znaków; podpisuj więc surowe ciało żądania. Ponadto upewnij się, że klucz jest dekodowany w ten sam sposób (szesnastkowo lub jako surowe bajty) po obu stronach.
Tak. Jeśli klucz jest krótszy niż wielkość bloku haszowanego, jest wypełniany zerami; jeśli dłuższy, najpierw podlega haszowaniu. RFC 2104 zaleca, aby klucze były co najmniej tak długie jak wynik haszowania (32 bajty dla SHA-256).
HMAC wciąż jest odporny na znane ataki kolizyjne typu MD5, ponieważ te ataki nie wpływają na proces generowania wartości HMAC. Niemniej jednak należy stosować HMAC-SHA-256 we wszystkich nowych kodach – takie wymagania są standardowe zarówno dla narzędzi implementacyjnych, jak i dla audytora.
Tak. Wiadomość i klucz tajny są wysyłane do naszego serwera przez szyfrowane połączenie HTTPS, aby można było obliczyć HMAC. Są używane wyłącznie do obliczeń i nie są przechowywane ani rejestrowane.
Powiązane narzędzia
Generator CSR
Wygeneruj zakodowane w PEM żądanie podpisania certyfikatu i pasujący prywatny klucz RSA. Podaj common name, pola organizacji i rozmiar klucza (2048, 3072 lub 4096 bitów).
Koder szyfru A1Z26
Koduj tekst szyfrem A1Z26 (A=1, B=2, ... Z=26) albo dekoduj sekwencję liczb z powrotem na litery, z własnym separatorem.
Weryfikator sum kontrolnych
Oblicz sumę kontrolną MD5, SHA-1, SHA-256, SHA-384, SHA-512 lub CRC32 dowolnego tekstu i porównaj ją z oczekiwaną wartością, aby uzyskać jednoznaczny werdykt zgodności lub niezgodności.
Koder plików Base64
Koduj dowolny plik (PDF, ZIP, obraz, plik wykonywalny) do tekstu Base64 do osadzania w JSON, e-mailu, YAML albo data URI. Działa lokalnie, bez uploadu.
Identyfikator szyfrów
Wklej ciphertext, a identyfikator zasugeruje prawdopodobne kodowania/szyfry: Base64, hex, binarny, Morse, Caesar lub podstawieniowy, JWT i popularne hashe.
Generator certyfikatów SSL
Wygeneruj samopodpisany certyfikat SSL/TLS i klucz prywatny RSA w całości w przeglądarce. Własny Common Name, nazwy SAN i ważność, eksport do PEM.
Narzędzie jest dostępne w innych językach
- Gerador de HMAC [PT]
- Bộ tạo HMAC [VI]
- Generador de HMAC [ES]
- HMACジェネレーター [JA]
- مولّد HMAC [AR]
- HMAC-generator [SV]
- Générateur HMAC [FR]
- HMAC-Generator [DE]
- ตัวสร้าง HMAC [TH]
- HMAC 생성기 [KO]
- HMAC-generator [NL]
- HMAC Generator [ID]
- Генератор HMAC [RU]
- HMAC Jeneratörü [TR]
- HMAC 生成器 [ZH]
- HMAC Generator [EN]
- Generatore HMAC [IT]