HMAC-generator
HMAC is het algoritme achter de meeste ondertekende webhooks, AWS Signature v4-headers en JWT HS256-tokens. Voer een bericht en een geheime sleutel in, kies een hashfamilie, en deze generator genereert de HMAC exact volgens de specificatie van RFC 2104 – handig om te controleren wat uw backend gaat verzenden of om een handtekening te reproduceren die u van een API hebt ontvangen.
Hoe berekent u een HMAC
-
1
Plak het bericht
De precieze bytes die moeten worden ondertekend: een webhook-payload, een canoniek verzoek of een willekeurige tekenreeks.
-
2
Voer de geheime sleutel in
Kan tekst of hexadecimaal zijn. De generator vult de sleutel aan of hasht deze tot de blokgrootte volgens de RFC.
-
3
Kies het hash-algoritme
SHA-256 is de standaardoptie; kies voor SHA-1, SHA-384, SHA-512 of MD5 voor compatibiliteit met oudere systemen.
-
4
Kopieer de handtekening
De uitvoer is in kleine letters hexadecimal en kan rechtstreeks in een webhookconfiguratie of een autorisatieheader worden geplakt.
De werking van HMAC
HMAC omvat een eenvoudige hashfunctie in een sleutelgebaseerde constructie, zodat de signatuur niet kan worden vervalst zonder de sleutel.
Het RFC 2104-recept
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
waarbij k' de sleutel is die is gepaddeerd naar de grootte van het hashblok, en opad = 0x5c repeated en ipad = 0x36 repeated.
Keuze van het algoritme
| Algoritme | Blokgrootte | Uitvoerlengte | Aanbevolen voor |
|---|---|---|---|
| HMAC-SHA-256 | 64 bytes | 32 bytes | Moderne standaard, voor het ondertekenen van webhooks |
| HMAC-SHA-384 | 128 bytes | 48 bytes | API-signering met hogere beveiliging |
| HMAC-SHA-512 | 128 bytes | 64 bytes | Langlevende tokens |
| HMAC-SHA-1 | 64 bytes | 20 bytes | Legacy (AWS S3 v2, OAuth 1.0) |
| HMAC-MD5 | 64 bytes | 16 bytes | Enkel beschikbaar voor oudere versies; vermijd bij nieuwe toepassingen |
Waar HMAC wordt weergegeven
- GitHub-, Stripe- en Shopify-webhooks: header
X-Hub-Signature-256,Stripe-Signature, etc. - AWS Signature v4: een keten van HMAC-SHA256 over het canonieke verzoek.
- JWT HS256: de token-signatuur is
HMAC-SHA-256(header.payload, secret). - Token voor wachtwoordherstelling: HMAC gebaseerd op user_id, vervaldatum en een sitegeheim.
Veelvoorkomende fouten
- Een hex-aangegeven sleutel als tekst overdragen in plaats van deze eerst te decoderen naar bytes.
- Onjuiste payload-bytes ondertekenen: sommige webhooks ondertekenen het ruwe verzoeklichaam inclusief witruimte, andere ondertekenen een canonieke vorm.
- Gebruik
==in JavaScript of Python om handtekeningen te vergelijken; gebruik altijd een tijdbeveiligde vergelijking om tijdgebaseerde aanvallen te voorkomen.
Veelgestelde vragen
Bijna altijd doordat de berichtbytes verschillen. Het ondertekenen van het uit JSON geparseerde lichaam leidt tot wijzigingen in de witruimte; onderteken daarom het ruwe verzoeklichaam. Controleer ook of de sleutel aan beide kanten op dezelfde manier wordt gedecodeerd (hexadecimaal versus ruwe bytes).
Ja. Als de sleutel korter is dan de grootte van het hashblok, wordt deze met nul aangevuld; als hij langer is, wordt hij eerst gehash. RFC 2104 beveelt sleutels aan die minstens even lang zijn als de uitvoer (32 bytes voor SHA-256).
HMAC blijft bestand tegen bekende MD5-collisionaanvallen, omdat deze aanvallen niet worden toegepast tijdens de constructie van HMAC. Gebruik echter HMAC-SHA-256 voor alle nieuwe code; tools en auditors verwachten dit.
Ja. Het bericht en de geheime sleutel worden via een versleutelde HTTPS-verbinding naar onze server gestuurd zodat het HMAC kan worden berekend. Ze worden alleen voor de berekening gebruikt en worden niet opgeslagen of gelogd.
Gerelateerde tools
Base64-bestandsencoder
Encodeer elk bestand (PDF, ZIP, afbeelding, executable) naar Base64-tekst om in JSON, e-mail, YAML of data URI's te embedden. Draait lokaal, geen upload.
Base58 encoder en decoder
Encodeer UTF-8-tekst of hexadecimale bytes en decodeer Base58 veilig met het Bitcoin-, Ripple- of Flickr-alfabet.
Caesar-cijfer encoder
Versleutel en ontsleutel tekst met het Caesar-cijfer. Elke verschuiving 1-25, ondersteunt ROT13 als speciaal geval, behoudt interpunctie en hoofdletters.
SSL-certificaatgenerator
Genereer een zelfondertekend SSL/TLS-certificaat en een RSA-privésleutel volledig in je browser. Eigen Common Name, SANs en geldigheid, geëxporteerd als PEM.
CSR-generator
Genereer een PEM-gecodeerd Certificate Signing Request en de bijbehorende RSA-private key. Geef de common name, de organisatievelden en de sleutelgrootte (2048, 3072 of 4096 bits) op.
bcrypt-generator
Genereer een bcrypt-hash van een plaintext wachtwoord. Instelbare costfactor van 4 tot 13, compatibel met Laravel, Django, Node en PHP.
Tool beschikbaar in andere talen
- Bộ tạo HMAC [VI]
- Générateur HMAC [FR]
- HMAC Generator [ID]
- مولّد HMAC [AR]
- HMAC 생성기 [KO]
- HMAC-Generator [DE]
- HMACジェネレーター [JA]
- HMAC-generator [SV]
- Generador de HMAC [ES]
- ตัวสร้าง HMAC [TH]
- Generator HMAC [PL]
- Gerador de HMAC [PT]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- Генератор HMAC [RU]
- HMAC Jeneratörü [TR]
- HMAC 生成器 [ZH]