Ne işe yarar
HMAC (hash tabanlı mesaj doğrulama kodu, RFC 2104), bir mesajı imzalamak için gizli bir anahtarı bir hash fonksiyonuyla birleştirir. Aynı anahtarı bilen alıcı HMAC’i yeniden hesaplar ve gelen değerle karşılaştırır. Mesaj değiştirildiyse veya gönderen anahtarı bilmiyorsa değerler eşleşmez.
HMAC her yerde kullanılır: webhook imzaları (GitHub, Stripe, Slack), imzalı API istekleri, HS256 algoritmalı JWT’ler, çerez imzalama ve tek kullanımlık parolalar. Bu araç HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 ve HMAC-SHA512 değerlerini aynı anda hesaplar; böylece sisteminizin kullandığıyla karşılaştırabilirsiniz.
Nasıl kullanılır
- Gizli anahtarı yazın. Anahtar düz metin yerine hex veya Base64 bayt olarak verildiyse Anahtar biçimini değiştirin.
- Mesajı yapıştırın veya Örnek’e tıklayın.
- Tüm HMAC değerleri siz yazdıkça güncellenir. Hex veya Base64 çıktıyı seçip gereken değeri kopyalayın.
Mesaj, boşluklar ve satır sonları dahil, tam yazıldığı gibi UTF-8 olarak kodlanır.
Örnek
Anahtar key ve mesaj The quick brown fox jumps over the lazy dog için HMAC-SHA256 değeri f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 olur. Aynı değeri komut satırında da doğrulayabilirsiniz:
echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"
-n seçeneğine dikkat edin: o olmadan echo bir satır sonu ekler ve HMAC değişir.
Webhook doğrulama
Bir webhook’u doğrulamak için JSON ayrıştırmadan önceki ham istek gövdesini alın, sağlayıcının belgelediği dizeyi (çoğunlukla timestamp.body) oluşturun, imzalama sırrınızla HMAC’i hesaplayın ve imza başlığıyla karşılaştırın. Kendi kodunuzda zamanlama saldırılarını önlemek için imzaları sabit zamanlı bir fonksiyonla karşılaştırın.
SSS
› Hash ile HMAC arasındaki fark nedir?
SHA-256 gibi düz bir hash’i herkes hesaplayabilir. HMAC, hash’e gizli bir anahtar katar; bu yüzden değeri yalnızca anahtarı bilen biri üretebilir veya doğrulayabilir. Sadece bir sağlama toplamı değil, bir mesaj doğrulama kodudur.
› Hangi HMAC algoritmasını kullanmalıyım?
Genellikle HMAC-SHA256 kullanılır; çoğu API ve webhook bunu bekler. HMAC-SHA512 de uygundur. HMAC-MD5 ve HMAC-SHA1 MAC olarak hâlâ güvenli kabul edilir, ancak yalnızca eski bir sistem gerektirdiğinde kullanın.
› HMAC değerim neden sunucununkiyle eşleşmiyor?
Mesajın tam baytlarını (sondaki bir satır sonu veya farklı JSON boşlukları her şeyi değiştirir), anahtar biçimini (metin, hex veya Base64) ve çıktı kodlamasını kontrol edin. Webhook sağlayıcıları çoğunlukla bir zaman damgası ile ham istek gövdesinden oluşan bir dizeyi imzalar.
› Gizli anahtarım kaydediliyor veya gönderiliyor mu?
Hayır. HMAC tarayıcınızda hesaplanır. Anahtar yalnızca bu sayfanın belleğinde tutulur; kaydedilmez, adres çubuğuna yazılmaz ve paylaşım bağlantılarına eklenmez.