Generator HMAC

Hitung tanda tangan HMAC-SHA-256 dan HMAC-SHA-512 dengan kunci rahasia Anda — langsung di browser Anda.

Cara menggunakan

  1. Tempel pesan yang ingin Anda autentikasi di kolom input.
  2. Masukkan kunci rahasia Anda, pilih HMAC-SHA-256 atau HMAC-SHA-512, lalu klik "Hitung HMAC".
  3. Salin tanda tangan hex huruf kecilnya. Kunci maupun pesan diproses secara lokal dan tidak pernah meninggalkan browser Anda.

Tentang alat ini

HMAC (Hash-based Message Authentication Code, RFC 2104) menggabungkan kunci rahasia dengan sebuah pesan untuk menghasilkan tanda tangan yang hanya bisa direproduksi oleh pemegang kunci yang sama. Inilah mekanisme di balik sebagian besar verifikasi webhook — Stripe, GitHub, Shopify, dan Slack semuanya menandatangani payload webhook mereka dengan HMAC-SHA-256 — serta signed URL, penandatanganan permintaan API, dan pemeriksaan integritas token sesi. Saat validasi webhook gagal, menghitung tanda tangan yang diharapkan secara manual dengan tool ini biasanya cara tercepat menemukan letak ketidakcocokannya.

Perhitungannya memakai SubtleCrypto, WebCrypto API bawaan browser: kunci diimpor dengan crypto.subtle.importKey dan tanda tangan dihasilkan dengan crypto.subtle.sign, sehingga kriptografinya adalah implementasi teraudit milik browser sendiri, bukan JavaScript yang menciptakannya ulang. HMAC bukan sekadar hash(kunci + pesan): ia melakukan hash dua kali, mencampur kunci dengan dua padding berbeda (lihat rumus di bawah), yang menutup serangan length-extension yang mematahkan konstruksi naifnya. Output di sini mereproduksi vektor uji RFC 4231 dengan persis.

Kunci rahasia Anda tidak pernah meninggalkan browser: tool ini tidak membuat permintaan jaringan apa pun, tidak mengunggah apa pun, dan tidak menyimpan apa pun — Anda bisa memastikannya di tab network pada developer tools browser Anda. Dua catatan praktis untuk kode produksi: selalu bandingkan tanda tangan dengan perbandingan constant-time untuk menghindari timing attack, dan pastikan kedua sisi menandatangani byte yang persis sama — newline tak terlihat di akhir atau body JSON yang diserialisasi ulang adalah penyebab paling umum HMAC yang tidak cocok.

Rumusnya

HMAC(K, m) = H((K xor opad) || H((K xor ipad) || m)), dengan H adalah fungsi hash dan ipad (byte 0x36) serta opad (byte 0x5c) diulang hingga ukuran blok hash. Hash ganda bersarang ini mencegah serangan length-extension yang mematahkan konstruksi naif hash(kunci + pesan).

Pertanyaan yang sering diajukan

Untuk apa HMAC digunakan?

Ia membuktikan sebuah pesan berasal dari pemegang kunci rahasia dan tidak diubah dalam perjalanan. Kegunaan umum: memverifikasi payload webhook (Stripe, GitHub, Shopify), menandatangani permintaan API, dan melindungi URL atau cookie dari manipulasi.

Apakah kunci rahasia saya meninggalkan browser?

Tidak. Kunci dan pesan diproses 100% secara lokal oleh WebCrypto API browser Anda — tidak ada yang dikirim, dicatat, atau disimpan di mana pun.

Mengapa HMAC saya tidak cocok dengan yang dihasilkan server saya?

Hampir selalu karena perbedaan encoding: newline di akhir, body JSON yang diserialisasi ulang, UTF-8 versus encoding lain, atau output hex yang dibandingkan dengan Base64. Tandatangani byte yang persis sama dengan kunci yang sama dan tanda tangannya pasti cocok.

Sebaiknya pakai HMAC-SHA-256 atau HMAC-SHA-512?

Keduanya dianggap aman. HMAC-SHA-256 adalah default industri dan yang dipakai sebagian besar penyedia webhook; pilih HMAC-SHA-512 bila pihak penerima mengharapkan tanda tangan 128 karakter.

Apakah HMAC sama dengan enkripsi?

Tidak. HMAC mengautentikasi pesan tetapi tidak menyembunyikannya — siapa pun tetap bisa membaca isinya. Gunakan enkripsi untuk kerahasiaan dan HMAC (atau keduanya, seperti pada authenticated encryption) untuk integritas dan keaslian.

Alat terkait

Tautan panjang? Perpendek secara gratis

Vai.la mengubah URL apa pun menjadi tautan pendek dengan statistik klik, QR Code, dan biolink Anda sendiri.

Vai.la tidak bertanggung jawab atas cara alat-alat ini digunakan maupun atas keputusan yang diambil berdasarkan hasilnya.