HMAC Jeneratörü
HMAC, çoğu imzalı webhook, AWS Signature v4 başlığı ve JWT HS256 tokeninin arkasındaki algoritmadır. Bir mesaj ve bir gizli anahtar girin, bir hash ailesi seçin; bu jeneratör, RFC 2104’te belirtilen şekilde tam olarak bir HMAC üretir, bu da arka uç sisteminizin göndermek üzere olan verilerini doğrulamak veya bir API’den aldığınız imzayı yeniden oluşturmak için kullanışlıdır.
HMAC'yi nasıl hesaplarız?
-
1
Mesajı yapıştırın
İmzalanacak kesin baytlar, bir webhook yükü, bir kanonik istek veya herhangi bir karakter dizisi.
-
2
Gizli anahtarı girin
Metin veya onaltılık (hex) olabilir. Jeneratör, RFC'ye uygun olarak anahtarı blok boyutuna doldurur veya hashler.
-
3
Hash algoritmasını seçin
SHA-256 varsayılan değerdir; eski sistemlerle uyumluluk için SHA-1, SHA-384, SHA-512 veya MD5'i seçin.
-
4
İmzayı kopyalayın
Çıktı, bir webhook yapılandırmasına veya Yetkilendirme başlığına yapıştırılmaya hazır küçük harfli onaltılık (hex) biçimindedir.
HMAC'ın iç yapısı
HMAC, basit bir hash fonksiyonunu anahtarlı bir yapı içinde paketler; böylece imza, anahtar olmadan taklit edilemez.
RFC 2104 Tarifi
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
Burada k', hash bloğu boyutuna doldurulan anahtardır; opad = 0x5c repeated ve ipad = 0x36 repeated ise sabit dolgulardır.
Algoritma Seçimi
| Algoritma | Blok boyutu | Çıkış uzunluğu | Uygun olduğu alanlar için önerilir |
|---|---|---|---|
| HMAC-SHA-256 | 64 bayt | 32 bayt | Modern varsayılan değer; webhook imzalama için kullanılır |
| HMAC-SHA-384 | 128 bayt | 48 bayt | Daha yüksek güvenlik seviyesine sahip API imzalama |
| HMAC-SHA-512 | 128 bayt | 64 bayt | Uzun ömürlü tokenler |
| HMAC-SHA-1 | 64 bayt | 20 bayt | Eski sürüm (AWS S3 v2, OAuth 1.0) |
| HMAC-MD5 | 64 bayt | 16 bayt | Yalnızca eski sistemler için; yeni projelerde kullanılmamalıdır |
HMAC nerede görünür
- GitHub, Stripe, Shopify webhook’ları:
X-Hub-Signature-256,Stripe-Signaturevb. başlıklar. - AWS Signature v4: Kanonik istek üzerine uygulanan bir HMAC-SHA256 zinciri.
- JWT HS256: Token imzası
HMAC-SHA-256(header.payload, secret)biçimindedir. - Parola sıfırlama token’ları: kullanıcı kimliği, son kullanım tarihi ve bir site gizli değeri üzerinden hesaplanan HMAC.
Yaygın Hatalar
- Onaltılık kodlu bir anahtarı önce baytlara çözmek yerine metin olarak iletmek.
- Yanlış yük baytlarını imzalamak: bazı webhook’lar boşluklar da dahil olmak üzere ham istek gövdesini imzalar, diğerleri ise kanonik formu imzalar.
- İmzaları karşılaştırmak için JavaScript veya Python’da
==kullanmak; zamanlama saldırılarına karşı direnmek için her zaman zamanlamaya karşı güvenli (timing-safe) bir karşılaştırma yöntemini tercih edin.
Sık Sorulan Sorular
Neredeyse her zaman mesaj baytlarının farklı olması nedeniyle. JSON olarak ayrıştırılan gövdenin imzalanması boşluklarda değişikliklere yol açar; bu yüzden ham istek gövdesini imzalayın. Ayrıca anahtarın her iki tarafta da aynı şekilde (onaltılık veya ham bayt olarak) çözüldüğünü kontrol edin.
Evet. Anahtar, hash bloğu boyutundan daha kısa ise sıfır ile tamamlanır; daha uzunsa önce hashlenir. RFC 2104, anahtarların çıktı boyutuna eşit veya ondan daha uzun olmasını önerir (SHA-256 için 32 bayt).
HMAC, saldırının HMAC yapısına taşınmaması nedeniyle bilinen MD5 çakışma saldırılarına karşı hâlâ dirençlidir. Yine de yeni kodlar için HMAC-SHA-256 kullanın; çünkü araçlar ve denetçiler bunu bekler.
Evet. HMAC’in hesaplanabilmesi için mesaj ve gizli anahtar, şifreli bir HTTPS bağlantısı üzerinden sunucumuza gönderilir. Yalnızca hesaplama için kullanılır ve saklanmaz ya da kaydedilmez.
İlgili Araçlar
Base64 Dosya Kodlayıcı
Herhangi bir dosyayı (PDF, ZIP, görüntü, çalıştırılabilir dosya) JSON, e-posta, YAML veya data URI içine gömmek için Base64 metne kodlayın. Yerel çalışır, yükleme yok.
A1Z26 Şifre Kodlayıcı
A1Z26 şifresiyle (A=1, B=2, ... Z=26) metni kodlayın veya sayı dizisini özel ayraçla tekrar harflere çözün.
Atbash Şifre Kodlayıcı
Metni Atbash şifresiyle kodlayın veya çözün; A-Z harflerini Z-A ile eşleyen İbrani kökenli bir yerine koyma şifresidir. Aynı işlem hem şifreler hem çözer.
Base58 Kodlayıcı ve Çözücü
UTF-8 metnini veya onaltılık baytları kodlayın; Base58 verisini Bitcoin, Ripple ya da Flickr alfabesiyle güvenle çözün.
Base85 Kodlayıcı ve Çözücü
PostScript ve PDF dosyalarının içinde kullanılan Adobe Ascii85 biçimiyle Base85 kodlayın ve çözün. İkili veri için Base64'ten daha kompakttır.
bcrypt Oluşturucu
Düz metin paroladan bcrypt hash üretin. 4 ile 13 arasında ayarlanabilir cost faktörü; Laravel, Django, Node ve PHP ile uyumludur.
Araç diğer dillerde mevcuttur
- مولّد HMAC [AR]
- HMAC-generator [SV]
- Gerador de HMAC [PT]
- ตัวสร้าง HMAC [TH]
- HMAC 생성기 [KO]
- HMACジェネレーター [JA]
- HMAC Generator [ID]
- HMAC-generator [NL]
- Generator HMAC [PL]
- Générateur HMAC [FR]
- Bộ tạo HMAC [VI]
- HMAC-Generator [DE]
- Generador de HMAC [ES]
- HMAC 生成器 [ZH]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- Генератор HMAC [RU]