HMAC-SHA256 Üreteci

Mesaj ve gizli anahtar girerek HMAC-SHA256 değerini hesaplayın.

Nasıl hesaplanır?

Araç HMAC-SHA256(anahtar, mesaj) değerini hesaplar. İçeride anahtar 64 baytlık blok boyutuna tamamlanır (daha uzunsa önce hash'lenir), iki sabitle XOR'lanır ve iç içe iki SHA-256 işleminde kullanılır. Sonuç 32 bayttır; 64 küçük harfli onaltılık karakter olarak ve ayrıca base64 olarak gösterilir. Metin ve anahtar birlikte gereklidir; biri boşsa araç sonuç vermez. İkisi de yazıldığı gibi düz UTF-8 metin sayılır, bu yüzden bir boşluk, satır sonu ya da büyük/küçük harf farkı çıktıyı değiştirir. Anahtar bir metin dizesidir, onaltılık değil: 0a1b yazarsanız iki bayt değil bu dört karakter kullanılır. Aynı girdi her zaman aynı sonucu verir.

Örnek hesaplama

Mesaj: The quick brown fox jumps over the lazy dog; anahtar: anahtar. Araç 64 karakterlik onaltılık kodu f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 olarak verir. Aynı 32 bayt base64 olarak 97yD9DBThCSxMpjmqm+xQ+9NWaFJRhdZl0edvC0aPNg= olur. "dog" yerine "cog" yazarsanız ya da anahtarı "Key" yaparsanız çıktı tamamen değişir; alıcı değişikliği böyle fark eder.

Bu örneği dene →

Sık yapılan hatalar

  • Mesajın veya anahtarın sonuna boşluk ya da yeni satır eklemek; sunucunun hesapladığından sessizce farklı bir kod çıkar.
  • Onaltılık ya da base64 anahtar girip önce çözülmesini beklemek; araç karakterleri yazıldığı gibi kullanır, ikili anahtar kodda işlenmelidir.
  • Onaltılık çıktıyı base64 imzayla (ya da tersini) biçim farkını görmeden karşılaştırmak.
  • HMAC'i şifreleme sanmak; kod yalnızca kaynağı ve bütünlüğü doğrular, mesajı gizlemez.
  • Gerçek bir üretim sırrını bir web sayfasına yapıştırmak; yalnızca uygulamanızı denemek istiyorsanız test anahtarı kullanın.

Bu hesaplama hakkında

HMAC-SHA256, RFC 2104'te tanımlanan anahtarlı bir hash mesaj kimlik doğrulama kodudur: gizli anahtarı iç içe iki SHA-256 hash işlemiyle mesajla birleştirir (HMAC(K,m) = H((K⊕opad) ∥ H((K⊕ipad) ∥ m))), böylece yalnızca anahtara sahip biri geçerli bir kod üretebilir ve mesaj veya anahtarda yapılan herhangi bir değişiklik tamamen farklı bir çıktı üretir. Düz bir hash'in aksine HMAC, özellikle uzunluk-uzatma saldırılarına karşı dayanıklı olacak şekilde tasarlanmıştır.

Bu üreteç bir mesaj ve gizli anahtar alır, HMAC-SHA256 kodunu hem onaltılık hem de base64 biçiminde hesaplar. API geliştiricileri, webhook yüklerini imzalamak ve doğrulamak, AWS tarzı istek imzaları üretmek, JWT HS256 token'ları oluşturmak ve bir mesajın iletim sırasında değiştirilmediğini doğrulamak için bunu sürekli kullanır — çünkü aynı anahtar ve mesaj her zaman aynı kodu üretir, bu da alıcı tarafın kodu yeniden hesaplayıp karşılaştırmasına imkân verir.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Etiketiniz sunucununkiyle eşleşmiyorsa, algoritmadan şüphelenmeden önce tam baytları karşılaştırın. Sondaki tek bir satır sonu bile etiketin tamamını değiştirir; sunucu anahtarı bayta çevirdiği hâlde onu onaltılık metin olarak yazmak da aynı sonucu verir. Bu sayfa iki alanı da yazdığınız metin olarak kullanır. İyi bir sınama, anahtar olarak key ve bilinen tilki cümlesinden oluşan ünlü test çiftidir. Hangi servisin ya da webhook imzasının sonucunu yeniden üretmeye çalışıyorsunuz?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar