tigtools

Penjana HMAC

Kira kod pengesahan mesej berkunci (HMAC) untuk mesej dan kunci rahsia, atau semak tandatangan yang anda terima. Kunci dan mesej kekal dalam penyemak imbas anda.

Berjalan dalam pelayar anda Tanpa pendaftaran

Kunci dan mesej diproses hanya dalam tab penyemak imbas ini dan tidak pernah dihantar ke mana-mana. Walau bagaimanapun, elakkan menampal rahsia produksi langsung pada komputer yang dikongsi atau tidak dipercayai.
Format kunci

Ditandatangani sebagai UTF-8 tepat seperti yang ditaip. Ruang di hujung atau pemisah baris mengubah hasil.

Output

Tampalkan tandatangan dalam hex (sebarang huruf besar/kecil) atau Base64 untuk membandingkannya dengan hasil di atas.

Cara menggunakannya

  1. Masukkan kunci rahsia dan pilih sama ada ia teks biasa atau bait hex.
  2. Tampal mesej, contohnya payload webhook tepat seperti yang diterima.
  3. Pilih algoritma dan pengekodan output yang digunakan oleh perkhidmatan anda; HMAC dikemas kini semasa anda menaip.
  4. Untuk menyemak tandatangan, tampalkannya ke dalam kotak pengesahan dan cari “Padan”.

Cara ia berfungsi

HMAC (RFC 2104) menggabungkan kunci rahsia dengan fungsi hash untuk menghasilkan tandatangan yang hanya boleh dicipta oleh seseorang yang memiliki kunci tersebut. Perkhidmatan seperti webhook dan permintaan API bertandatangan menghantar HMAC bersama setiap mesej supaya penerima boleh menyemak bahawa mesej itu sahih dan tidak diubah.

Alat ini menggunakan Web Crypto API penyemak imbas anda (crypto.subtle.importKey dan sign) dan disemak terhadap vektor ujian RFC 4231 dan RFC 2202. Kunci teks dan mesej dikodkan sebagai UTF-8. Kunci hex dinyahkod kepada bait mentah; ruang, titik bertindih dan awalan 0x diabaikan. HMAC-SHA-256 ialah pilihan paling lazim; HMAC-SHA-1 masih dianggap selamat sebagai MAC tetapi kebanyakannya digunakan oleh API lama.

Jika tandatangan anda tidak sepadan, semak butiran yang paling kerap berbeza: bait mesej tepat (banyak penyedia webhook menandatangani badan mentah, bukan JSON yang diformat semula), cap masa atau awalan yang ditambah oleh penyedia kepada rentetan yang ditandatangani, sama ada kunci digunakan sebagai teks atau perlu dinyahkod daripada hex atau Base64 dahulu, dan sama ada tandatangan yang dijangkakan ialah hex atau Base64 serta membawa awalan seperti “sha256=”, yang patut anda buang sebelum membandingkan.

Contoh

Kes ujian RFC 4231

Kunci “Jefe” (teks), mesej “what do ya want for nothing?” dan HMAC-SHA-256 memberikan 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Gunakan “Cuba contoh” untuk memuatkannya.

Menyemak tandatangan webhook

Penyedia menghantar pengepala X-Signature: sha256=… dengan setiap permintaan. Tampalkan badan permintaan mentah sebagai mesej, rahsia webhook anda sebagai kunci, pilih HMAC-SHA-256 dan Hex, kemudian tampalkan nilai selepas “sha256=” ke dalam kotak sahkan.

Kunci berkod hex

Sesetengah sistem mengeluarkan kunci sebagai rentetan hex seperti 0b0b0b…. Pilih Hex sebagai format kunci supaya alat menandatangani dengan bait yang dinyahkod; melayan rentetan yang sama sebagai teks memberikan hasil yang berbeza sama sekali.

Soalan Lazim

Apakah perbezaan antara HMAC dengan hash biasa?

Sesiapa sahaja boleh mengira hash biasa seperti SHA-256 bagi sesuatu mesej. HMAC pula bergantung pada kunci rahsia, jadi hanya seseorang yang memiliki kunci itu boleh menghasilkan atau menyemaknya. Itu membuktikan mesej itu datang daripada pemegang kunci dan tidak diubah.

Mengapa HMAC saya tidak sepadan dengan yang daripada pelayan saya?

Bait input hampir selalu berbeza: penghujung baris, ruang kosong, susunan kunci JSON, pengekodan aksara, atau kunci yang sepatutnya dinyahkod daripada hex atau Base64. Juga bandingkan pengekodan yang sama (hex lawan Base64) dan buang awalan seperti “sha256=”.

Adakah kunci rahsia saya dihantar ke mana-mana?

Tidak. Kunci dan mesej hanya digunakan oleh Web Crypto API dalam tab penyemak imbas ini. Ia tidak dimuat naik, disimpan atau disertakan dalam analitik.

Adakah HMAC-SHA-1 masih selamat?

Perlanggaran SHA-1 tidak memecahkan HMAC-SHA-1 secara langsung, dan ia masih diterima untuk keserasian. Untuk sistem baharu, gunakan HMAC-SHA-256 atau yang lebih kuat.

Privasi

Kunci, mesej dan hasil hanya wujud dalam tab penyemak imbas ini. Tiada apa-apa dimuat naik, disimpan atau dihantar kepada analitik; hanya satu peristiwa tanpa nama tentang penggunaan alat ini direkodkan.