HMAC Generator
HMAC adalah algoritma di balik sebagian besar webhook bertanda tangan, header AWS Signature v4, dan token JWT HS256. Masukkan pesan dan kunci rahasia, pilih keluarga hash, dan generator ini menghasilkan HMAC persis sebagaimana ditentukan RFC 2104, berguna untuk memverifikasi apa yang akan dikirim backend Anda, atau mereproduksi tanda tangan yang Anda terima dari API.
Cara menghitung HMAC
-
1
Tempel pesan
Byte tepat yang akan ditandatangani: payload webhook, request kanonis, atau string apa pun.
-
2
Masukkan secret key
Bisa teks atau hex. Generator mem-pad atau meng-hash-nya ke ukuran blok sesuai RFC.
-
3
Pilih algoritma hash
SHA-256 adalah default; pilih SHA-1, SHA-384, SHA-512, atau MD5 untuk kompatibilitas lawas.
-
4
Salin tanda tangan
Output berupa hex huruf kecil, siap ditempel ke konfigurasi webhook atau header Authorization.
HMAC di balik layar
HMAC membungkus fungsi hash biasa dalam konstruksi keyed sehingga tanda tangan tidak bisa dipalsukan tanpa key.
Resep RFC 2104
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
di mana k' adalah key yang di-pad ke ukuran blok hash, opad = 0x5c diulang, dan ipad = 0x36 diulang.
Pilihan algoritma
| Algoritma | Ukuran blok | Panjang output | Direkomendasikan untuk |
|---|---|---|---|
| HMAC-SHA-256 | 64 byte | 32 byte | Default modern, penandatanganan webhook |
| HMAC-SHA-384 | 128 byte | 48 byte | Penandatanganan API keamanan lebih tinggi |
| HMAC-SHA-512 | 128 byte | 64 byte | Token berumur panjang |
| HMAC-SHA-1 | 64 byte | 20 byte | Lawas (AWS S3 v2, OAuth 1.0) |
| HMAC-MD5 | 64 byte | 16 byte | Hanya lawas; hindari untuk kerja baru |
Di mana HMAC muncul
- Webhook GitHub, Stripe, Shopify: header
X-Hub-Signature-256,Stripe-Signature, dll. - AWS Signature v4: rantai HMAC-SHA256 atas request kanonis.
- JWT HS256: tanda tangan token adalah
HMAC-SHA-256(header.payload, secret). - Token reset password: HMAC atas user_id + kedaluwarsa + secret situs.
Kesalahan umum
- Mengirim key ber-encode hex sebagai teks alih-alih men-decode-nya ke byte dulu.
- Menandatangani byte payload yang salah: beberapa webhook menandatangani body request mentah termasuk spasi, yang lain menandatangani bentuk kanonis.
- Memakai
==di JavaScript atau Python untuk membandingkan tanda tangan; selalu pakai perbandingan timing-safe untuk menahan serangan timing.
Pertanyaan yang Sering Diajukan
Hampir selalu karena byte pesan berbeda. Menandatangani body yang sudah di-parse JSON memunculkan perubahan spasi; tandatangani body request mentah. Verifikasi juga key di-decode dengan cara sama (hex vs byte mentah) di kedua sisi.
Ya. Jika key lebih pendek dari ukuran blok hash ia di-pad nol; jika lebih panjang, ia di-hash dulu. RFC 2104 merekomendasikan key setidaknya sepanjang output (32 byte untuk SHA-256).
HMAC masih tahan terhadap serangan collision MD5 yang diketahui karena serangan itu tidak berlaku pada konstruksi HMAC. Tetap saja, gunakan HMAC-SHA-256 untuk kode baru mana pun, tooling dan auditor mengharapkannya.
Ya. Pesan dan kunci rahasia dikirim ke server kami melalui koneksi HTTPS terenkripsi agar HMAC dapat dihitung. Keduanya hanya dipakai untuk perhitungan dan tidak disimpan atau dicatat.
Alat Terkait
Encoder File Base64
Encode file apa pun (PDF, ZIP, gambar, file program) menjadi teks Base64 untuk disematkan dalam JSON, email, YAML, atau data URI. Berjalan lokal, tanpa unggah.
Pengode sandi A1Z26
Kodekan teks dengan sandi A1Z26 (A=1, B=2, ... Z=26) atau baca kembali urutan angka menjadi huruf, dengan pemisah yang bisa disesuaikan.
Encoder Sandi Caesar
Enkripsi dan dekripsi teks menggunakan sandi Caesar. Pergeseran apa pun 1-25, mendukung ROT13 sebagai kasus khusus, mempertahankan tanda baca dan kapitalisasi.
Encoder Sandi Atbash
Encode atau decode teks dengan sandi Atbash, substitusi Ibrani yang memetakan A-Z menjadi Z-A. Operasi yang sama mengenkripsi dan mendekripsi.
Encoder dan Decoder Base58
Encode teks UTF-8 atau byte heksadesimal dan decode Base58 secara aman dengan alfabet Bitcoin, Ripple, atau Flickr.
Generator bcrypt
Buat hash bcrypt dari password plaintext. Faktor cost dapat diatur dari 4 sampai 13, kompatibel dengan Laravel, Django, Node, dan PHP.
Alat ini tersedia dalam bahasa lain
- مولّد HMAC [AR]
- HMAC-generator [SV]
- Gerador de HMAC [PT]
- ตัวสร้าง HMAC [TH]
- HMAC 생성기 [KO]
- HMACジェネレーター [JA]
- HMAC-generator [NL]
- Générateur HMAC [FR]
- Bộ tạo HMAC [VI]
- HMAC-Generator [DE]
- Generador de HMAC [ES]
- Generator HMAC [PL]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- Генератор HMAC [RU]
- HMAC Jeneratörü [TR]
- HMAC 生成器 [ZH]