Cara menggunakan
- Masukkan kunci rahasia, lalu pilih apakah kunci berupa teks biasa atau byte hex.
- Tempel pesan, misalnya payload webhook persis seperti yang diterima.
- Pilih algoritma dan encoding output yang digunakan layanan Anda; HMAC akan diperbarui saat Anda mengetik.
- Untuk memeriksa signature, tempelkan ke kotak verifikasi dan cari “Cocok”.
Cara kerja
HMAC (RFC 2104) menggabungkan kunci rahasia dengan fungsi hash untuk menghasilkan tanda tangan yang hanya dapat dibuat oleh orang yang memiliki kuncinya. Layanan seperti webhook dan permintaan API bertanda tangan menyertakan HMAC pada setiap pesan agar penerima dapat memeriksa keaslian dan memastikan pesan tidak diubah.
Alat ini menggunakan Web Crypto API di browser Anda (crypto.subtle.importKey dan sign) dan telah diuji dengan vektor uji RFC 4231 dan RFC 2202. Kunci teks dan pesan dikodekan sebagai UTF-8. Kunci hex didekode menjadi byte mentah; spasi, titik dua, dan 0x di awal diabaikan. HMAC-SHA-256 adalah pilihan yang paling umum; HMAC-SHA-1 masih dianggap aman sebagai MAC, tetapi terutama digunakan oleh API lama.
Jika tanda tangan Anda tidak cocok, periksa detail yang paling sering berbeda: byte pesan yang persis sama (banyak penyedia webhook menandatangani isi mentah, bukan JSON yang diformat ulang), stempel waktu atau prefiks yang ditambahkan penyedia ke string yang ditandatangani, apakah kunci digunakan sebagai teks atau harus didekode dari hex atau Base64 terlebih dahulu, serta apakah tanda tangan yang diharapkan berformat hex atau Base64 dan memiliki prefiks seperti “sha256=” yang perlu dihapus sebelum dibandingkan.
Contoh
Kasus uji RFC 4231
Kunci “Jefe” (teks), pesan “what do ya want for nothing?” dan HMAC-SHA-256 menghasilkan 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Gunakan “Coba contoh” untuk memuatnya.
Memeriksa tanda tangan webhook
Penyedia mengirim header X-Signature: sha256=… bersama setiap permintaan. Tempel isi mentah permintaan sebagai pesan, rahasia webhook Anda sebagai kunci, pilih HMAC-SHA-256 dan Hex, lalu tempel nilai setelah “sha256=” ke kotak verifikasi.
Kunci yang dikodekan dalam hex
Beberapa sistem memberikan kunci dalam bentuk string hex, seperti 0b0b0b…. Pilih Hex sebagai format kunci agar alat ini menandatangani dengan byte yang sudah didekode. Jika string yang sama diperlakukan sebagai teks, hasilnya akan sangat berbeda.
Pertanyaan yang sering diajukan
Apa perbedaan HMAC dengan hash biasa?
Siapa pun dapat menghitung hash biasa seperti SHA-256 dari sebuah pesan. HMAC juga bergantung pada kunci rahasia, sehingga hanya orang yang memiliki kunci tersebut yang dapat membuat atau memeriksanya. Ini membuktikan bahwa pesan berasal dari pemegang kunci dan tidak diubah.
Mengapa HMAC saya tidak cocok dengan yang dari server?
Byte input hampir selalu berbeda: akhir baris, spasi, urutan kunci JSON, pengodean karakter, atau kunci yang seharusnya didekode dari hex atau Base64. Pastikan juga Anda membandingkan format yang sama (hex atau Base64) dan menghapus prefiks seperti “sha256=”.
Apakah kunci rahasia saya dikirim ke mana pun?
Tidak. Kunci dan pesan hanya digunakan oleh Web Crypto API di tab browser ini. Keduanya tidak diunggah, disimpan, atau disertakan dalam analitik.
Apakah HMAC-SHA-1 masih aman?
Tabrakan SHA-1 tidak secara langsung merusak HMAC-SHA-1, dan algoritma ini masih diterima demi kompatibilitas. Untuk sistem baru, gunakan HMAC-SHA-256 atau yang lebih kuat.
Privasi
Kunci, pesan, dan hasil hanya ada di tab browser ini. Tidak ada yang diunggah, disimpan, atau dikirim ke analitik; hanya peristiwa anonim yang mencatat penggunaan alat ini.