Nasıl kullanılır?
- Gizli anahtarı girin ve düz metin mi yoksa hex baytları mı olduğunu seçin.
- Mesajı yapıştırın; örneğin bir webhook yükünü alındığı hâliyle girin.
- Hizmetinizin kullandığı algoritmayı ve çıktı kodlamasını seçin; yazdıkça HMAC güncellenir.
- Bir imzayı kontrol etmek için doğrulama alanına yapıştırın ve “Eşleşti” sonucunu arayın.
Nasıl çalışır?
HMAC (RFC 2104), yalnızca anahtara sahip olan birinin oluşturabileceği bir imza üretmek için gizli bir anahtarı hash işleviyle birleştirir. Webhook'lar ve imzalı API istekleri gibi hizmetler, alıcının mesajın gerçek ve değiştirilmemiş olduğunu doğrulayabilmesi için her mesajla birlikte bir HMAC gönderir.
Bu araç, tarayıcınızın Web Crypto API'sini (crypto.subtle.importKey ve sign) kullanır ve RFC 4231 ile RFC 2202 test vektörleriyle doğrulanmıştır. Metin anahtarı ve mesaj UTF-8 olarak kodlanır. Hex anahtarı ham baytlara dönüştürülür; boşluklar, iki noktalar ve baştaki 0x yok sayılır. HMAC-SHA-256 en yaygın tercihtir; HMAC-SHA-1 bir MAC olarak hâlâ güvenli kabul edilir ancak daha çok eski API'lerde kullanılır.
İmzanız eşleşmiyorsa en sık farklılık gösteren ayrıntıları kontrol edin: mesaj baytlarının birebir aynı olması (birçok webhook sağlayıcısı yeniden biçimlendirilmiş JSON'u değil, ham gövdeyi imzalar), sağlayıcının imzalanan metne eklediği zaman damgası veya ön ek, anahtarın metin olarak mı kullanıldığı yoksa önce hex veya Base64'ten mi çözülmesi gerektiği ve beklenen imzanın hex mi Base64 mü olduğu. Ayrıca “sha256=” gibi bir ön ek varsa karşılaştırmadan önce kaldırın.
Örnekler
RFC 4231 test senaryosu
“Jefe” anahtarı (metin) ve “what do ya want for nothing?” mesajı kullanıldığında HMAC-SHA-256 sonucu 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 olur. Yüklemek için “Bir örnek dene”yi kullanın.
Webhook imzasını doğrulama
Bir sağlayıcı her istekle birlikte X-Signature: sha256=… başlığını gönderiyor. Ham istek gövdesini mesaj olarak yapıştırın, webhook gizli anahtarınızı anahtar olarak girin, HMAC-SHA-256 ve Hex'i seçin, ardından “sha256=” sonrasındaki değeri doğrulama alanına yapıştırın.
Hex kodlu bir anahtar
Bazı sistemler 0b0b0b… gibi hex dizeleri biçiminde anahtarlar verir. Araç imzayı çözülmüş baytlarla oluştursun diye anahtar biçimi olarak Hex'i seçin; aynı dizeyi metin olarak kullanmak tamamen farklı bir sonuç verir.
Sık sorulan sorular
HMAC ile sıradan bir hash arasındaki fark nedir?
Herkes bir mesajın SHA-256 gibi sıradan bir hash değerini hesaplayabilir. HMAC ise gizli bir anahtara da bağlıdır; bu nedenle yalnızca anahtara sahip olan biri HMAC oluşturabilir veya doğrulayabilir. Böylece mesajın anahtara sahip birinden geldiği ve değiştirilmediği kanıtlanır.
HMAC değerim sunucumdakiyle neden eşleşmiyor?
Girdi baytları çoğunlukla farklıdır: satır sonları, boşluklar, JSON anahtarlarının sırası, karakter kodlaması veya hex ya da Base64'ten çözülmesi gereken bir anahtar. Ayrıca aynı kodlamayı karşılaştırdığınızdan emin olun (hex veya Base64) ve “sha256=” gibi ön ekleri kaldırın.
Gizli anahtarım herhangi bir yere gönderiliyor mu?
Hayır. Anahtar ve mesaj yalnızca bu tarayıcı sekmesindeki Web Crypto API tarafından kullanılır. Yüklenmez, saklanmaz veya analiz verilerine eklenmez.
HMAC-SHA-1 hâlâ güvenli mi?
SHA-1 çakışmaları HMAC-SHA-1'i doğrudan bozmaz ve geriye dönük uyumluluk için hâlâ kabul edilir. Yeni sistemlerde HMAC-SHA-256 veya daha güçlü bir algoritma kullanın.
Gizlilik
Anahtar, mesaj ve sonuç yalnızca bu tarayıcı sekmesinde bulunur. Hiçbir şey yüklenmez, saklanmaz veya analiz amacıyla gönderilmez; yalnızca aracın kullanıldığına dair anonim bir etkinlik kaydedilir.