logo
GeekFormat

Generator & Verifikasi HMAC

Algoritma Hashi

Panjang kunci yang direkomendasikan sesuai dengan panjang keluaran Hash: SHA-1 = 20 bytes, SHA-256 = 32 bytes, SHA-384 = 48 bytes, SHA-512 = 64 bytes

Isi Pesan0 Karakter
Tanda tangan HMAC (Hex)
Menunggu input...

Catatan

  • HMAC Generates signature berbasis kunci dan algoritma Hashi untuk otentikasi sumber dan integritas
  • Dukung SHA-1 / SHA-256 / SHA-384 / SHA-512
  • Hasilkan dan validasi baik lokal dalam browser, tanpa mengunggah data
  • Validasi menggunakan panjang tetap dengan bytes untuk mengurangi perbedaan seri waktu

Generate dan verifikasi tanda tangan HMAC online gratis, mendukung seri algoritma SHA umum, cocok untuk penandatanganan interface, verifikasi Webhook, dan integrasi keamanan.

Rekomendasi Terkait

Kasus penggunaan

  • Pengembangan webhook Stripe: debug callback pembayaran Stripe dan verifikasi kebenaran header `Stripe-Signature`
  • Integrasi webhook GitHub: verifikasi signature `X-Hub-Signature-256` untuk event Push dan Pull Request
  • Sinkronisasi pesanan Shopify: validasi signature `X-Shopify-Hmac-Sha256` dari webhook pembaruan pesanan Shopify
  • Signature bot Slack: verifikasi `X-Slack-Signature` untuk callback event Slack
  • Debugging pengembangan JWT: sign JWT dengan HS256 dan periksa validitas token
  • Signing request API: implementasikan AWS Signature V4 atau skema signing API kustom

Fitur

  • Dukungan beberapa algoritma: HMAC-SHA256/384/512, SHA1, dan MD5 untuk API modern maupun sistem lama
  • Verifikasi signature webhook: dukungan bawaan untuk format Stripe, GitHub, Shopify, dan Slack dengan auto-parsing
  • Tiga format output: Hex, Base64, dan Base64URL, agar sesuai dengan kebutuhan berbagai API dan platform
  • Generate secara real time: kalkulasi otomatis 300 ms setelah input berubah, tanpa perlu klik tombol
  • Mode verifikasi signature: tempel signature yang diharapkan dan lihat hasil kecocokannya secara langsung
  • Deteksi panjang key: pemantauan kekuatan key secara real time dengan peringatan jika key terlalu pendek
  • Pemrosesan berbasis browser: perhitungan lokal memakai Web Crypto API, key tidak pernah diunggah ke server
  • Dukungan JWT: output HMAC-SHA256 dapat langsung digunakan untuk signing HS256

Cara Penggunaan

  1. Pilih algoritma: default-nya HMAC-SHA256, direkomendasikan untuk API modern
  2. Masukkan pesan: tempel body pesan mentah atau konten request API
  3. Masukkan key: isi Webhook Secret atau API Secret
  4. Pilih format: tentukan format output, misalnya Hex untuk Stripe atau Base64URL untuk JWT
  5. Verifikasi signature: pindah ke mode verifikasi, lalu tempel signature yang diharapkan untuk dibandingkan

Pertanyaan Umum

Apa bedanya HMAC dengan hashing biasa?

Fungsi hash biasa, seperti SHA256, hanya menghitung digest dari pesan itu sendiri; siapa pun bisa membuatnya. HMAC memasukkan secret key ke dalam proses hashing, sehingga hanya pihak yang memiliki key tersebut yang dapat membuat atau memverifikasi signature yang valid. Karena itu, HMAC memastikan integritas sekaligus keaslian pesan, sedangkan hash biasa hanya memeriksa integritas.

Bagaimana cara memverifikasi signature webhook Stripe, GitHub, atau Shopify?

Setiap platform memakai format signature yang berbeda: Stripe menggunakan header `Stripe-Signature` dengan format `t=timestamp,v1=hex_signature` dan menandatangani string `timestamp.payload`; GitHub menggunakan `X-Hub-Signature-256` dengan format `sha256=hex_signature`; Shopify mengirim `X-Shopify-Hmac-Sha256` sebagai nilai yang di-encode dalam Base64. Tool ini mendukung verifikasi langsung untuk format-format umum tersebut.

Apa perbedaan output Hex, Base64, dan Base64URL?

Hex adalah format heksadesimal (0-9, A-F), mudah dibaca, dan sangat membantu saat debugging. Base64 adalah encoding 64 karakter yang lebih ringkas dan cocok disisipkan ke dalam JSON. Base64URL adalah versi yang aman untuk URL (mengganti +/ dengan -_), biasa digunakan pada header JWT dan parameter URL.

Algoritma HMAC mana yang sebaiknya digunakan?

**HMAC-SHA256 adalah pilihan yang disarankan**: ini adalah standar modern untuk API dan webhook (digunakan oleh Stripe, GitHub, Shopify, dan Slack), menghasilkan output 32 byte, serta didukung hampir di semua tempat. SHA-512 memberi margin keamanan lebih tinggi, tetapi output-nya lebih panjang (64 byte). SHA1 sebaiknya hanya dipakai untuk sistem lama. MD5 sudah deprecated dan hanya layak digunakan jika API lama benar-benar masih mewajibkannya.

Berapa panjang key yang sebaiknya digunakan?

Semakin panjang key, semakin baik keamanannya. Minimal 16 karakter (128 bit) disarankan, dan untuk production sebaiknya 32 karakter atau lebih. Tool ini memantau panjang key secara real time dan memberi peringatan jika terlalu pendek. Gunakan generator acak yang aman secara kriptografis untuk membuat key, bukan password sederhana atau string yang mudah ditebak.

Mengapa verifikasi signature menunjukkan mismatch?

Penyebab yang paling umum: 1) pesan berisi spasi atau baris baru tambahan; 2) platform menandatangani string gabungan, misalnya Stripe menandatangani `timestamp.payload`; 3) signature menyertakan prefix yang perlu dihapus, seperti `sha256=` dari GitHub; 4) algoritma yang digunakan berbeda. Pastikan kedua sisi memakai parameter yang benar-benar sama.

Apakah HMAC bisa digunakan untuk signing JWT?

Bisa. Algoritma HS256 pada JWT adalah HMAC-SHA256, sedangkan HS512 adalah HMAC-SHA512. Output HMAC-SHA256 dari tool ini dapat langsung digunakan sebagai konten signature untuk HS256. Pada JWT, Header dan Payload di-encode dengan Base64URL, lalu ditandatangani menggunakan HS256.

Apakah tool HMAC online ini aman?

Tool ini menggunakan Web Crypto API untuk melakukan semua perhitungan secara lokal di browser Anda. Key dan pesan tidak pernah dikirim ke server mana pun. Anda bisa memeriksanya lewat panel Network di DevTools browser: tidak ada request eksternal yang dibuat. Cocok untuk testing dan development; untuk key production yang sangat sensitif, gunakan tool lokal offline.

Apakah signature HMAC bisa dipalsukan?

Tidak, selama key tetap rahasia dan algoritma hash yang digunakan memiliki ketahanan collision yang baik. Dengan key yang cukup panjang dan acak, tidak ada serangan yang diketahui dapat memalsukan signature HMAC yang valid. Rotasi key secara berkala juga merupakan praktik keamanan yang baik.

Apa itu Generator & Verifikasi HMAC?

HMAC (Hash-based Message Authentication Code) adalah teknologi autentikasi pesan yang banyak digunakan dan didefinisikan dalam RFC 2104. HMAC memproses key bersama pesan melalui fungsi hash untuk menghasilkan signature dengan panjang tetap. Berbeda dari hash biasa, HMAC membutuhkan key untuk membuat atau memverifikasi signature, sehingga dapat memastikan integritas sekaligus keaslian pesan.

**HMAC adalah salah satu fondasi keamanan API modern**. Stripe, GitHub, Shopify, Slack, dan Twilio memakai HMAC-SHA256 untuk menandatangani event webhook, sehingga penerima dapat memastikan request benar-benar berasal dari platform tersebut. AWS juga memakai HMAC-SHA256 untuk request signing Signature V4. Algoritma HS256 pada JWT pada dasarnya adalah HMAC-SHA256. Memahami HMAC adalah langkah awal yang penting untuk menguasai keamanan API.

**Setiap platform memiliki format signature yang berbeda**: Stripe menggunakan `t=timestamp,v1=hex_signature` dan menandatangani `timestamp.payload`; GitHub memakai `X-Hub-Signature-256` dengan format `sha256=hex_signature`; Shopify mengirim `X-Shopify-Hmac-Sha256` sebagai nilai Base64-encoded. Tool ini dapat melakukan parsing dan verifikasi otomatis untuk format-format umum tersebut.

**Mengapa verifikasi signature bisa gagal?** Penyebab paling sering adalah format pesan yang tidak sama: platform mungkin menandatangani `timestamp.payload` alih-alih body pesan mentah; pesan bisa berisi baris baru tambahan; atau signature mungkin menyertakan prefix seperti `sha256=` yang harus dihapus. Periksa dokumentasi platform dengan teliti dan bandingkan memakai nilai hexadecimal mentah.

Tool ini menggunakan **Web Crypto API** bawaan browser (SubtleCrypto) untuk perhitungan HMAC, basis kriptografi yang juga digunakan oleh HTTPS dan TLS. Semua komputasi berjalan lokal; key dan pesan tidak pernah dikirim ke server mana pun. Buka panel Network di DevTools browser untuk memastikan tidak ada request eksternal yang dibuat.