HMAC (Hash-based Message Authentication Code), RFC 2104'te tanımlanan yaygın olarak kullanılan bir mesaj kimlik doğrulama teknolojisidir. HMAC, bir anahtarı bir mesajla birlikte hash fonksiyonundan geçirerek sabit uzunlukta bir imza üretir. Normal hash'lerden farklı olarak, HMAC bir imza oluşturmak veya doğrulamak için anahtarı bilmeyi gerektirir, böylece hem mesaj bütünlüğünü hem de kimlik doğrulamayı garanti eder.
**HMAC modern API güvenliğinin temelidir**. Stripe, GitHub, Shopify, Slack ve Twilio, isteklerin gerçekten platformdan geldiğinden emin olmak için webhook olaylarını HMAC-SHA256 ile imzalar. AWS, Signature V4 istek imzalama için HMAC-SHA256 kullanır. JWT'nin HS256 algoritması esasen HMAC-SHA256'dır. HMAC'i anlamak, API güvenliğini ustalaşmanın ilk adımıdır.
**Farklı platformların farklı imza formatları vardır**: Stripe'ın formatı `t=timestamp,v1=hex_signature`'dır ve `timestamp.payload`'ı imzalar; GitHub `X-Hub-Signature-256`'yı `sha256=hex_signature` formatıyla kullanır; Shopify `X-Shopify-Hmac-Sha256`'yı Base64 kodlu değerle kullanır. Bu araç, bu yaygın formatların otomatik ayrıştırmasını ve doğrulanmasını destekler.
**İmza doğrulama neden başarısız olur?** En yaygın neden mesaj formatı uyuşmazlığıdır: platform ham mesaj gövdesi yerine `timestamp.payload`'ı imzalıyor olabilir; veya mesaj fazla satır sonu içeriyor; veya imza kaldırılması gereken bir önek (`sha256=` gibi) içeriyor. Platform belgelerini dikkatlice kontrol edin ve ham onaltılık değeri kullanarak karşılaştırın.
Bu araç HMAC hesaplamaları için tarayıcının yerel **Web Crypto API**'sini (SubtleCrypto) kullanır — HTTPS ve TLS'yi çalıştıran aynı kriptografi kütüphanesi. Tüm hesaplamalar yerel olarak yapılır; anahtarlar ve mesajlar hiçbir sunucuya gönderilmez. Harici istek yapılmadığını doğrulamak için tarayıcı Geliştirici Araçları Network panelini açın.