Lewati ke konten
πŸ› οΈToolsShed

Generator HMAC

Membuat tanda tangan HMAC menggunakan SHA-256/384/512 dari pesan dan kunci rahasia.

Tentang alat ini

HMAC (Kode Autentikasi Pesan Berbasis Hash) adalah teknik kriptografi yang digunakan untuk memverifikasi integritas dan keaslian data dalam transit atau saat istirahat. Dengan menggabungkan kunci rahasia dengan pesan, HMAC menghasilkan tanda tangan unik yang membuktikan data tidak telah diubah dan bahwa hanya seseorang dengan kunci rahasia yang dapat membuatnya. Ini menjadikannya penting untuk mengamankan API, memvalidasi webhook, menandatangani kredensial, dan melindungi komunikasi sensitif di Internet.

Untuk menggunakan alat ini, masukkan pesan Anda di bidang teks dan berikan kunci rahasia yang Anda bagikan dengan penerima. Pilih algoritma hash (SHA-256, SHA-384, atau SHA-512) berdasarkan persyaratan keamanan Anda, kemudian klik "Buat HMAC" untuk menghasilkan tanda tangan. Hash yang dihasilkan dapat dikirim bersama data Anda sehingga penerima dapat memverifikasi keaslian dengan menghasilkan HMAC yang sama menggunakan salinan kunci rahasia mereka.

HMAC banyak digunakan oleh pemroses pembayaran, API cloud (AWS, Google Cloud, Stripe), dan sistem komunikasi real-time untuk mencegah gangguan dan mengkonfirmasi asal pesan. Varian SHA-256 memberikan keamanan kuat untuk sebagian besar kasus penggunaan, sementara SHA-384 dan SHA-512 menawarkan margin keamanan tambahan untuk aplikasi yang sangat sensitif. Ingat bahwa keamanan HMAC sepenuhnya bergantung pada menjaga kunci rahasia Anda tetap pribadi β€” jangan pernah membagikannya melalui saluran yang tidak aman.

Pertanyaan yang Sering Diajukan

Implementasi Kode

import hmac
import hashlib
import base64
import secrets

# Generate HMAC-SHA256
key = secrets.token_bytes(32)   # 256-bit random key
message = "Hello, World!"

# Raw hex output
mac = hmac.new(key, message.encode(), hashlib.sha256)
print("HMAC-SHA256 (hex):", mac.hexdigest())

# Base64 output (common for API signatures)
mac_b64 = base64.b64encode(mac.digest()).decode()
print("HMAC-SHA256 (b64):", mac_b64)

# HMAC-SHA512
mac512 = hmac.new(key, message.encode(), hashlib.sha512)
print("HMAC-SHA512 (hex):", mac512.hexdigest())

# Constant-time verification (prevents timing attacks)
def verify_hmac(key: bytes, message: str, expected: str) -> bool:
    computed = hmac.new(key, message.encode(), hashlib.sha256).hexdigest()
    return hmac.compare_digest(computed, expected)

signature = mac.hexdigest()
print("Valid:  ", verify_hmac(key, message, signature))   # True
print("Invalid:", verify_hmac(key, "tampered", signature)) # False

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.