araç köşesi

HMAC Üretici (SHA-256, SHA-384, SHA-512, SHA-1)

Mesaj ve gizli anahtardan HMAC imzası üretin, webhook imzasını beklenen değerle karşılaştırın

Verileriniz sizde kalır. Dönüşüm tarayıcının içinde yapılır, hiçbir şey sunucuya gitmez.

Nasıl çalışır?

Sol panele imzalanacak mesajı yapıştırın, Gizli anahtar alanına da servisin size verdiği anahtarı yazın; HMAC imzası sağ panelde anında görünür. Örneğin bir ödeme servisinin webhook'unu test ediyorsanız isteğin gövdesini olduğu gibi, tek bir boşluk bile eklemeden yapıştırın: mesajdaki fazladan bir satır sonu imzanın tamamen değişmesine yeter. Servisin başlıkta gönderdiği imzayı Beklenen imza alanına koyun; araç sha256= gibi önekleri atlar, imzanın hex ya da Base64 olduğunu kendisi anlar ve sonuç satırında AYNI ya da EŞLEŞMEDİ diye yazar. Anahtarınız rastgele baytlardan oluşuyorsa ve size hex olarak verildiyse Anahtar biçimi ayarını Hex bayt yapın; aynı karakterler metin olarak okunursa bambaşka bir anahtar olur. Algoritma çoğu serviste SHA-256'dır; belgede HmacSHA512 yazıyorsa SHA-512'yi seçin. Hesap tarayıcınızın yerleşik şifreleme motorunda yapılır; mesajınız da anahtarınız da bu sayfadan çıkmaz ve hata kayıtlarına bile yazılmaz.

Bu araç hmac hesaplama, hmac sha256, hmac generator, hmac sha512 aramalarıyla da biliniyor.

HMAC nedir?

HMAC (Hash-based Message Authentication Code), bir mesajdan ve gizli bir anahtardan sabit uzunlukta bir imza üreten yöntemdir (RFC 2104). Anahtar iki farklı dolgu değeriyle karıştırılır ve seçilen özet algoritmasından iki kez geçirilir. Sonuç, mesajın hem değişmediğini hem de anahtarı bilen biri tarafından üretildiğini gösterir. Webhook'lar, API istek imzaları ve oturum çerezleri bu yöntemle korunur.

Webhook imzası nedir?

Webhook imzası, bir servisin size gönderdiği bildirimin başlığına eklediği HMAC değeridir. Servis bildirimin gövdesini sizinle paylaştığı gizli anahtarla imzalar; siz aynı gövdeyi aynı anahtarla imzalayıp başlıktaki değerle karşılaştırırsınız. İki değer aynıysa bildirim gerçekten o servisten gelmiştir. Başlık adı servise göre değişir, değer çoğu zaman sha256= önekiyle ya da Base64 olarak gelir.

HMAC ile dijital imza arasındaki fark nedir?

HMAC'te imzalayan ve doğrulayan aynı gizli anahtarı paylaşır; anahtarı bilen iki taraftan biri imzayı üretmiş olabilir, bu yüzden HMAC üçüncü kişiye karşı kimin imzaladığını kanıtlamaz. Dijital imzada (RSA, ECDSA) ise iki ayrı anahtar vardır: yalnız sahibi imzalar, herkes açık anahtarla doğrular. HMAC çok daha hızlıdır ve iki sistemin birbirine güvendiği webhook, API gibi durumlar için yeterlidir; sözleşme ya da yazılım dağıtımı gibi inkâr edilemezlik gereken yerlerde dijital imza kullanılır.

İmza tutmuyorsa: en sık dört sebep

HMAC, mesajdaki her bayta duyarlıdır. Webhook doğrulamasında imzanın tutmamasının en yaygın sebebi, gövdenin imzalanan hâlinden farklı olmasıdır: JSON'u güzelleştirip yeniden yazmak, alan sırasını değiştirmek ya da sona satır sonu eklemek imzayı bozar. Servisin gönderdiği ham gövdeyi hiç dokunmadan kullanın.

Diğer sebepler: anahtarın yanlış biçimde okunması (hex verilmiş anahtarı metin olarak kullanmak), yanlış algoritma (SHA-1 ile SHA-256 karışması) ve imzanın farklı biçimde karşılaştırılması (bir taraf hex, öbür taraf Base64). Bazı servisler mesajın başına zaman damgası ekleyip öyle imzalar; bu durumda imzalanan metin "zaman.gövde" gibi birleştirilmiş hâlidir, belgeye bakın.

  • Gövde değişmiş: boşluk, satır sonu, alan sırası
  • Anahtar biçimi: hex anahtar metin olarak okunmuş
  • Algoritma: SHA-1, SHA-256, SHA-512 karışmış
  • Çıktı: hex ile Base64 karşılaştırılmış ya da imzalanan metne zaman damgası eklenmiş

Hangi algoritmayı seçmelisiniz?

Karşı taraf hangisiyle imzalıyorsa onu seçin; algoritma servis belgesinde yazar ve imzanın uzunluğundan da anlaşılır: hex olarak 40 hane SHA-1, 64 hane SHA-256, 96 hane SHA-384, 128 hane SHA-512 demektir. Kendi sisteminizi kuruyorsanız HMAC-SHA256 yeterli ve en yaygın destekli seçenektir.

SHA-1'in bilinen çakışma zayıflığı HMAC yapısını doğrudan kırmaz; yine de yeni tasarımda kullanılmaz ve yalnız eski sistemlerle uyum için listededir. MD5 tabanlı HMAC bu araçta yoktur: tarayıcıların şifreleme motoru MD5'i desteklemez ve bu araç algoritmayı elle yazmak yerine o motoru kullanır.

Sık sorulanlar

HMAC SHA256 nasıl hesaplanır?

Mesajı sol panele, gizli anahtarı Gizli anahtar alanına yapıştırın ve algoritmayı SHA-256 bırakın. 64 haneli hex imza sağ panelde görünür; Base64 isterseniz Çıktı biçimini değiştirin. Hesap tarayıcınızda yapılır.

HMAC ile normal hash arasındaki fark nedir?

Normal özeti (hash) herkes hesaplayabilir; mesajı değiştiren kişi yeni özeti de üretir. HMAC ise hesaba gizli bir anahtar katar: anahtarı bilmeyen kişi mesajı değiştirse bile geçerli imza üretemez. Bu yüzden HMAC, mesajın gerçekten anahtarı bilen taraftan geldiğini ve yolda değişmediğini kanıtlar.

Gizli anahtarımı bu sayfaya yazmak güvenli mi?

Anahtar tarayıcınızın içinde kalır: araç kodunun ağa istek atması yasaktır ve bir hata olsa bile anahtar hata kaydına yazılmaz, yerine [gizli] yazılır. Yine de üretim ortamının anahtarını paylaşılan bir bilgisayarda kullanmayın; test için ayrı bir anahtar tercih edin.

Anahtar boşken neden sonuç çıkmıyor?

HMAC tanımı gereği bir anahtar ister; tarayıcıların şifreleme motoru boş anahtarı kabul etmez. Anahtarsız bir özet istiyorsanız dosyalar için Hash Üretici aracını kullanın.