Skip to content

HMAC Üretici ve İmza Doğrulayıcı

Ücretsiz online HMAC üretici ve doğrulayıcı. Metin, Hex veya Base64 anahtarlarla ve Hex/Base64/Base64URL çıktısıyla HMAC-SHA256/SHA1/SHA384/SHA512 hesaplayın. %100 tarayıcınızda — anahtarlar sayfadan asla çıkmaz.

Takip Yok Tarayıcıda Çalışır Ücretsiz
%100 tarayıcınızda — mesajınız ve gizli anahtarınız cihazınızdan asla çıkmaz.
Üretilen HMAC

HMAC Nedir?

HMAC (Hash-based Message Authentication Code), bir mesajın hem değiştirilmemiş hem de gerçek olduğunu — paylaşılan bir gizli anahtarı tutan biri tarafından üretildiğini — kanıtlayan kısa, sabit uzunlukta bir etikettir. RFC 2104 ve FIPS 198-1'de tanımlanan HMAC, herhangi bir kriptografik hash fonksiyonunu gizli bir anahtarla özel bir iç içe yapıda birleştirir; HMAC(K, m) = H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)) olarak yazılır. İç hash anahtarı mesaja bağlar; dış hash sonucu sarar ve bu, HMAC'i ham SHA-1 ve SHA-256 fonksiyonlarını etkileyen uzunluk uzatma saldırılarına dayanıklı kılan şeydir.

HMAC modern web altyapısında her yerdedir. Webhook'ları imzalar; böylece gelen bir isteğin gerçekten GitHub, Stripe, Slack veya Twilio'dan geldiğini ve uydurulmadığını doğrulayabilirsiniz. API isteklerini imzalar (AWS Signature Version 4 HMAC-SHA256 üzerine kuruludur); böylece bir sunucu, parolayı ağ üzerinden göndermeden çağıranı kimlik doğrulayabilir. HS256'daki S'dir: HS256 ile imzalanan bir JWT, başlığı ve yükü üzerinde bir HMAC-SHA256 taşır ve bunu JWT olusturucuyla inceleyebilirsiniz. Ayrıca TLS anahtar türetmenin (HKDF), tek seferlik parola algoritmalarının (HOTP/TOTP) ve sayısız dahili serviste mesaj bütünlüğünün temelini oluşturur.

Bu araç HMAC'i tamamen tarayıcınızda, Web Crypto API'sinden crypto.subtle.sign('HMAC', ...) kullanarak hesaplar — tarayıcıların TLS el sıkışmaları sırasında kullandığı ilkel yapının aynısı. Gizli anahtarınız ve mesajınız asla yüklenmez, bu yüzden üretim imzalama gizli anahtarları için güvenlidir. Aynı gizli anahtar ham metin, hex veya base64 olarak ifade edilebildiğinden araç Anahtar kodlamasını açıkça seçmenize izin verir; ve farklı sağlayıcılar etiketi farklı biçimlerde beklediğinden Hex, Base64 veya Base64URL çıktısı üretebilirsiniz. Doğrula sekmesi, aldığınız bir imzayı sabit zamanlı bir karşılaştırma kullanarak kontrol etmenizi sağlar; böylece kontrolün kendisi zamanlama bilgisi sızdırmaz.

const crypto = require('crypto');

// HMAC-SHA256 with a UTF-8 text key, hex output
const hmac = crypto
  .createHmac('sha256', 'my-secret-key')
  .update('Hello, World!')
  .digest('hex');

console.log(hmac);
// → 'cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699'

// Verify a signature in constant time
function verify(message, key, expectedHex) {
  const actual = crypto.createHmac('sha256', key).update(message).digest();
  const expected = Buffer.from(expectedHex, 'hex');
  return actual.length === expected.length &&
    crypto.timingSafeEqual(actual, expected);
}

Temel Özellikler

Tek araçta üretme ve doğrulama

Üret sekmesinde bir imza üretin ya da gelen bir webhook veya tokenı kimlik doğrulamak için Doğrula sekmesinde bir Beklenen HMAC yapıştırın. Doğrulama, sabit zamanlı bir karşılaştırma kullanır; böylece sonuç asla zamanlama bilgisi sızdırmaz.

Anahtar kodlamasını seçin

Gizli anahtarınızı Metin (UTF-8), Onaltılık veya Base64 olarak yorumlayın. Bu, çoğu başka aracın atladığı ayardır — ve iki sistemin aynı anahtar için farklı HMAC hesaplamasının en yaygın nedenidir.

Üç çıktı kodlaması

Etiketi Hex (GitHub webhook'ları, AWS), Base64 (Stripe, Twilio, birçok API) veya Base64URL (JWT'ler ve URL güvenli tokenlar) olarak çıkarın; böylece manuel dönüşüm olmadan entegrasyonunuza uyar.

Dört yerel algoritma

Varsayılan olarak HMAC-SHA256, ayrıca SHA-1, SHA-384 ve SHA-512. Hepsi tarayıcının Web Crypto API'sinde çalışır; böylece güvenilecek bir JavaScript kripto kütüphanesi ve performans cezası yoktur.

%100 istemci tarafı ve gizli

Gizli anahtarınız ve mesajınız tamamen tarayıcınızda işlenir ve hiçbir sunucuya gönderilmez. Network sekmesini açın; sıfır giden istek görürsünüz — üretim imzalama gizli anahtarları için güvenli.

Canlı hesaplama

HMAC, mesajı, anahtarı, kodlamayı veya algoritmayı düzenlediğinizde anında yeniden hesaplanır — Üret düğmesi gidiş-dönüşü olmadan, böylece değeriniz sunucununkiyle eşleşene kadar kodlamalarla deney yapabilirsiniz.

Test edilmiş vektörler üzerine kurulu

Çıktı, resmi RFC 4231 HMAC test vektörlerine karşı doğrulanır; böylece özetlerin OpenSSL, Node'un crypto modülü ve Python'ın hmac kütüphanesinin ürettiğiyle eşleştiğine güvenebilirsiniz.

HMAC Örnekleri

Hızlı başlangıç — HMAC-SHA256, hex çıktı

Hello, World!
cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699

"my-secret-key" anahtarı (Anahtar kodlaması = Metin), HMAC-SHA256 algoritması ve Çıktı biçimi = Hex ile "Hello, World!" mesajı cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699 üretir. Bu, Node'un crypto.createHmac('sha256', key).update(msg).digest('hex') çağrısından aldığınız kanonik 64 karakterlik hex özetidir.

Stripe tarzı bir webhook'u doğrula (Base64 çıktı)

{"id":42,"event":"user.created"}
Cd2f7zTKaJFeG6k+t1FcvDPn51OAZ2f4GrxkCUgMhGs=

Birçok webhook sağlayıcısı imzayı Base64 olarak gönderir. "whsec_test_secret" anahtarı (Metin), HMAC-SHA256 ve Çıktı biçimi = Base64 ile JSON gövdesi Cd2f7zTKaJFeG6k+t1FcvDPn51OAZ2f4GrxkCUgMhGs= olarak imzalanır. İsteği işlemeden önce gerçekten sağlayıcınızdan geldiğini doğrulamak için bu değeri Doğrula sekmesine yapıştırın. Dahili olarak HMAC, SHA-256 özet üreticimizle aynı ilkel yapı üzerinde çalışır, ancak gizli anahtarınızla anahtarlanır.

RFC 4231 referans vektörü

what do ya want for nothing?
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

Bu, resmi HMAC test vektörü belgesi RFC 4231'den 2. test durumudur. "Jefe" anahtarı (Metin), HMAC-SHA256, Hex çıktısı ile "what do ya want for nothing?" mesajı 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 verir. Tam olarak bu değeri eşleştirmek, bir HMAC uygulamasının doğru olduğunu kanıtlama yöntemidir.

Daha uzun bir özet için HMAC-SHA512

The quick brown fox
36f44b125a8a90639dc46733039571792e081e0fd8685ff746784b02ed14aa35629d562c7117cde4a701570551faa5a5e1b7ef1eb5c3bcd4cc1fdb8923fcf14e

128 karakterlik (512 bit) bir özet için algoritmayı HMAC-SHA512'ye geçirin. "key" anahtarı (Metin) ve Hex çıktısı ile "The quick brown fox" yukarıdaki değeri üretir. SHA-512, çoğu 64 bit donanımda SHA-256'dan daha hızlıdır ve daha büyük bir çıktı verir; yine de SHA-256 birlikte çalışabilirlik varsayılanı olmayı sürdürür.

HMAC Nasıl Üretilir ve Doğrulanır

  1. 1

    Algoritmayı seçin

    HMAC-SHA256'yı seçin (varsayılan ve neredeyse tüm webhook, API ve JWT'ler için doğru tercih) ya da bunu gerektiren bir sisteme uymak için SHA-1, SHA-384 veya SHA-512'ye geçin. Dördü de Web Crypto API üzerinden tarayıcınızda yerel olarak çalışır.

  2. 2

    Gizli anahtarı girin ve kodlamasını ayarlayın

    Gizli anahtarınızı yazın veya yapıştırın, ardından Anahtar kodlamasını sunucunun onu nasıl yorumladığına uyacak şekilde ayarlayın: düz bir dize için Metin (UTF-8), onaltılık bir blob için Hex veya base64 bir gizli anahtar için Base64. Bunu yanlış yapmak HMAC uyuşmazlıklarının baş nedenidir, bu yüzden tereddütteyseniz üçünü de deneyin.

  3. 3

    Mesajı girin

    İmzalamak istediğiniz tam baytları yapıştırın — bir webhook için bu, yeniden serileştirme veya boşluk değişikliği olmadan, bayt bayt ham istek gövdesidir. HMAC siz düzenledikçe canlı olarak yeniden hesaplanır ve sunucuya hiçbir şey gönderilmez.

  4. 4

    Çıktı biçimini seçin ve kopyalayın

    Entegrasyonunuzun beklediğine uymak için Hex (GitHub tarzı), Base64 (Stripe/AWS tarzı) veya Base64URL (JWT tarzı) seçin, ardından imzayı almak için Kopyala'ya tıklayın.

  5. 5

    Mevcut bir imzayı doğrulayın

    Doğrula sekmesine geçin, bir başlıktan veya tokendan Beklenen HMAC'i yapıştırın; araç, hesapladığınız imzanın eşleşip eşleşmediğini sabit zamanda doğrular — böylece bir yük üzerinde işlem yapmadan önce onu kimlik doğrulayabilirsiniz.

Yaygın HMAC Hataları

Anahtar kodlaması uyuşmazlığı (uyuşmazlıkların 1 numaralı nedeni)

Aynı gizli anahtar ham UTF-8 metni, hex veya base64 olarak okunabilir — ve her yorum tamamen farklı anahtar baytları üretir, dolayısıyla aracınız ile sunucu anlaşamazsa HMAC eşleşmez. Bir sağlayıcı size hex veya base64 bir gizli anahtar verirse, dizeyi olduğu gibi imzalamak yerine imzalamadan önce onu baytlara çözmelisiniz. Bir imza doğrulanamadığında önce anahtarı üç Anahtar kodlaması seçeneğinin altında deneyin.

✗ Yanlış
// Server stored a base64 secret but you sign the literal string
createHmac('sha256', 'c2VjcmV0LWtleQ==').update(msg)
✓ Doğru
// Decode the base64 secret to raw bytes first
createHmac('sha256', Buffer.from('c2VjcmV0LWtleQ==', 'base64')).update(msg)

Çıktı kodlaması uyuşmazlığı

Bir HMAC ham baytlardır; hex, base64 ve base64url aynı değerin yalnızca farklı metin kodlamalarıdır. Sunucu base64 bir imza gönderirse ve siz onu hex özetinizle karşılaştırırsanız, alttaki baytlar aynı olsa bile asla eşleşmezler. Çıktı biçimini başlığın veya tokenın kullandığına uydurun.

✗ Yanlış
// Provider sends base64, you compare hex
expected = 'Cd2f7z...=' // base64
actual   = digest('hex') // hex — never matches
✓ Doğru
// Produce the same encoding the provider uses
actual = digest('base64')

Ham gövde yerine yeniden serileştirilmiş JSON'u imzalama

Webhook imzaları, sağlayıcının gönderdiği tam baytları kapsar. JSON'u ayrıştırıp yeniden dizeye dönüştürürseniz anahtar sırası, boşluk ve sayı biçimi değişebilir; bu da baytları değiştirir ve imzayı bozar. Her zaman, herhangi bir ayrıştırmadan önce yakalanan ham istek gövdesini HMAC'leyin.

✗ Yanlış
// Re-serialization changes the bytes
body = JSON.stringify(JSON.parse(rawBody))
verify(hmac(body))
✓ Doğru
// Sign the raw bytes exactly as received
verify(hmac(rawBody))

Sabit zamanlı karşılaştırma yerine == kullanma

Alınan imzayı == veya basit dize eşitliğiyle karşılaştırmak zamanlama bilgisi sızdırır, çünkü karşılaştırma farklılaşan ilk baytta durur. Birçok deneme boyunca bir saldırgan geçerli bir etiketi kurtarabilir. Doğrulama yaparken her zaman sabit zamanlı bir eşitlik kontrolü kullanın.

✗ Yanlış
if (received === computed) { /* trust */ }
✓ Doğru
if (crypto.timingSafeEqual(receivedBuf, computedBuf)) { /* trust */ }

HMAC Ne İçin Kullanılır

Webhook imzalarını doğrula
GitHub, Stripe, Slack ve Twilio gibi sağlayıcılar her webhook'u istek gövdesi ve yalnızca sizinle paylaştıkları bir gizli anahtar üzerinde HMAC ile imzalar. Etiketi yeniden hesaplayın ve başlıkla (örneğin X-Hub-Signature-256) karşılaştırarak, üzerinde işlem yapmadan önce olayın gerçek olduğunu doğrulayın. Bunu tek seferlik kod yazmadan yapmak için Doğrula sekmesini kullanın.
API isteklerini imzala
Kimlik doğrulamalı API'ler genellikle istemcinin gizli anahtarın kendisini göndermek yerine, isteği (yöntem, yol, zaman damgası, gövde) paylaşılan bir gizli anahtarla HMAC ile imzalamasını ister. AWS Signature Version 4 kanonik örnektir. Bu araç, bu imzaları adım adım yeniden üretmenize ve hata ayıklamanıza olanak tanır.
Mesaj bütünlüğünü garanti et
Servisler arasında bir token, çerez veya mesaj geçirdiğinizde bir HMAC eklemek, alıcının her türlü kurcalamayı tespit etmesini sağlar. Etiket bir gizli anahtara bağlı olduğundan saldırgan, veriyi değiştirdikten sonra onu yeniden hesaplayamaz — düz bir sağlama toplamının aksine.
JWT HS256 imzalamayı anla
HS256 ile imzalanan bir JWT, yalnızca base64url(header) + '.' + base64url(payload)'dır; HMAC-SHA256 ile imzalanır ve sonuç Base64URL olarak yayılır. Bu imzanın tam olarak nasıl üretildiğini görmek için burada algoritmayı SHA-256'ya, çıktıyı Base64URL'ye ayarlayın, ardından JWT olusturucuda çapraz kontrol edin.
Eşleşmeyen bir imzayı ayıkla
HMAC'iniz sunucununkiyle eşleşmediğinde, bu araç nedenini izole etmenin en hızlı yoludur: anahtarı Metin, Hex ve Base64 olarak deneyin, çıktıyı Hex ile Base64 arasında değiştirin ve tam ham baytları imzaladığınızdan emin olun — hepsi herhangi bir kodu yeniden dağıtmadan.

HMAC Nasıl Çalışır

RFC 2104 yapısı
HMAC, H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)) olarak tanımlanır; burada ipad tekrarlanan 0x36 baytı, opad ise tekrarlanan 0x5c baytıdır ve ikisi de hash'in blok boyutuna kadar uzanır. Blok boyutundan uzun bir anahtar önce hash'lenir; daha kısa bir anahtar sıfırla doldurulur. Bu iki geçişli iç içe yapı, HMAC'e güvenlik kanıtını verir ve bu kanıt, alttaki hash çakışmaya dirençli olmasa bile geçerlidir.
Anahtarlı bir hash neden düz bir hash'i yener
Düz bir hash yalnızca verinin rastlantısal olarak bozulmadığını kanıtlar, çünkü herkes onu herhangi bir mesaj için — değiştirilmiş bir mesaj dahil — yeniden hesaplayabilir. HMAC araya gizli bir anahtar katar, böylece yalnızca anahtar sahipleri geçerli bir etiket üretebilir. Bu, yalnızca-bütünlüğü, webhook'ların ve imzalı isteklerin gerçekten ihtiyaç duyduğu özellik olan bütünlük artı gerçekliğe dönüştürür.
Uzunluk uzatma direnci
Çıplak SHA-1, SHA-256 ve SHA-512, uzunluk uzatmaya açık Merkle–Damgård hash'leridir: H(secret ‖ msg) verildiğinde bir saldırgan, gizli anahtarı bilmeden H(secret ‖ msg ‖ extra) hesaplayabilir. Naif 'gizli-önekli MAC' şemaları bununla kırılır. HMAC'in dış hash'i bu saldırıyı etkisizleştirir; bu da gizli anahtarı ve mesajı birlikte hash'lemek yerine HMAC kullanmanın başlıca nedenidir.
SHA-256 ile SHA-512 arasında seçim
HMAC-SHA256, 256 bit (64 hex karakter) bir etiket üretir ve birlikte çalışabilirlik varsayılanıdır — hızlı, yaygın ve her yerde desteklenir. HMAC-SHA512, 512 bit (128 hex karakter) bir etiket üretir ve SHA-512 64 bit kelimeler kullandığından 64 bit CPU'larda genellikle daha hızlıdır. Bir spesifikasyon veya eş sistem SHA-512 gerektirmedikçe SHA-256'yı seçin; ikisi de kimlik doğrulama için güvenlidir.
Web Crypto uygulaması
Bu araç, anahtarınızı (Metin, Hex veya Base64'ten çözülmüş) yüklemek için crypto.subtle.importKey'i ve etiketi hesaplamak için crypto.subtle.sign('HMAC', ...) çağrısını kullanır, ardından ham baytları Hex, Base64 veya Base64URL olarak kodlar. Bu, tarayıcının TLS için kullandığı, hız için JavaScript motorunun dışında çalışan, aynı yerel ve denetlenmiş uygulamadır.

HMAC En İyi Uygulamaları

Hash çıktısı kadar uzun bir anahtar kullanın
HMAC-SHA256 için en az 32 rastgele bayt (256 bit), SHA-512 için 64 bayt uzunluğunda bir gizli anahtar kullanın. Kısa veya düşük entropili bir anahtar en zayıf halkadır. Anahtarları kriptografik olarak güvenli bir rastgele kaynaktan üretin — asla bir paroladan veya tahmin edilebilir bir dizeden değil.
Etiketleri her zaman sabit zamanda karşılaştırın
İmzaları == veya dize eşitliği yerine sabit zamanlı bir karşılaştırmayla (Node'da crypto.timingSafeEqual, Python'da hmac.compare_digest) doğrulayın. Naif bir karşılaştırma, farklılaşan ilk baytta erken döner ve bir saldırganın geçerli bir etiketi bayt bayt kurtarmasına izin verebilecek zamanlama sızdırır. Bu aracın Doğrula sekmesi zaten sabit zamanda karşılaştırır.
Gizli anahtarı asla loglamayın veya ifşa etmeyin
İmzalama gizli anahtarlarını loglardan, hata mesajlarından, URL'lerden ve istemci tarafı koddan uzak tutun. Bunları bir gizli anahtar yöneticisinde veya ortam değişkenlerinde saklayın, periyodik olarak döndürün ve her entegrasyonu kendi anahtarıyla kapsayın ki bir sızıntı her şeyi tehlikeye atmasın.
HMAC-SHA256 veya daha güçlüsünü tercih edin
Varsayılan olarak HMAC-SHA256 kullanın; bir eş gerektirdiğinde SHA-384 veya SHA-512'ye yükseltin. Yeni sistemlerde HMAC-SHA1'den kaçının ve asla HMAC-MD5 kullanmayın. HMAC, ham bir imzaya göre daha zayıf bir hash'i daha iyi tolere etse de modern bir hash'ten başlamak size en büyük marjı verir.
Zaman damgası dahil tam baytları imzalayın
Ham, değiştirilmemiş yükü imzalayın — JSON'u yeniden serileştirmek veya boşlukları kırpmak baytları değiştirir ve doğrulamayı bozar. İstek imzalama için imzalanan veriye bir zaman damgası veya nonce ekleyin ve yeniden oynatma (replay) saldırılarını önlemek için eski imzaları reddedin.

HMAC SSS

HMAC nedir?
HMAC (Hash-based Message Authentication Code), paylaşılan bir gizli anahtar kullanarak bir mesajın hem bütünlüğünü hem de gerçekliğini kanıtlamanın bir yoludur. Bir mesajı ve gizli anahtarı, RFC 2104'te tanımlanan özel iç içe yapıda bir hash fonksiyonuna (burada SHA-1, SHA-256, SHA-384 veya SHA-512) verirsiniz ve sabit uzunlukta bir etiket elde edersiniz. Gizli anahtarı bilen herkes etiketi yeniden hesaplayabilir ve mesajın değiştirilmediğini ve anahtarı tutan birinden geldiğini doğrulayabilir. Bu, webhook imzalarının, imzalı API isteklerinin ve JWT tokenlarının HS256 ailesinin arkasındaki standart mekanizmadır.
HMAC, SHA-256 gibi düz bir hash'ten nasıl farklıdır?
SHA-256 gibi düz bir hash yalnızca bütünlüğü kanıtlar: herkes onu yeniden hesaplayabilir, dolayısıyla herkes değiştirilmiş bir mesaj için eşleşen bir hash de uydurabilir. HMAC araya gizli bir anahtar katar, böylece yalnızca o anahtarı tutan taraflar geçerli bir etiket üretebilir veya doğrulayabilir — bu, bütünlüğün üzerine gerçeklik ekler. HMAC ayrıca iç içe iki geçişli bir yapı kullanır (anahtardan türetilen pad'lerle iç ve dış hash'leme) ve bu, onu ham SHA-1 ve SHA-256'yı etkileyen uzunluk uzatma (length-extension) saldırılarına karşı bağışık kılar. Kısacası: rastlantısal bozulmayı tespit etmek için hash, anahtarınızı bilmeyen bir saldırganın kasıtlı kurcalamasını tespit etmek için HMAC kullanın.
Gelen bir webhook imzasını nasıl doğrularım?
Ham istek gövdesini alındığı şekliyle tam olarak alın (JSON'u yeniden serileştirmeyin — anahtar sırasını değiştirmek bile imzayı bozar), sağlayıcınızın kullandığı algoritmayı (genellikle HMAC-SHA256) seçin, imzalama gizli anahtarınızı doğru Anahtar kodlamasıyla girin ve Çıktı biçimini başlığa uyacak şekilde ayarlayın (GitHub'ın sha256= önekı için Hex, Stripe/Twilio tarzı başlıklar için Base64). Sonra Doğrula sekmesini açın, başlıktan (örneğin X-Hub-Signature-256) gelen imzayı yapıştırın; araç, sabit zamanlı bir karşılaştırma kullanarak eşleşme ya da uyuşmazlık bildirir. Yüke yalnızca eşleşirse güvenin.
Sunucum hangi anahtar ve çıktı kodlamasını kullanıyor?
Evrensel bir yanıt yok — bu sağlayıcınıza bağlı ve bu araç ikisini de açık seçenekler olarak sunmasının nedeni tam olarak budur. Yaygın kalıplar: GitHub UTF-8 metin gizli anahtarı ve sha256= önekli küçük harf hex çıktı kullanır; Stripe metin gizli anahtarı ve base64 kullanır; AWS Signature V4 türetilmiş ikili anahtarlar ve hex kullanır; birçok dahili sistem, imzalamadan önce ham baytlara çözülmesi gereken base64 veya hex gizli anahtarlar dağıtır. HMAC'iniz eşleşmiyorsa neredeyse her zaman suçlu kodlamadır — sunucunun beklediği yorumu bulmak için aynı anahtarı Metin, Hex ve Base64 altında deneyin.
HMAC-SHA256 güvenli mi?
Evet. HMAC-SHA256 geniş ölçüde güvenli kabul edilir ve mesaj kimlik doğrulaması için önerilen varsayılandır. Güvenliği HMAC yapısından ve güçlü bir alttaki hash'ten gelir ve çıplak hash'e karşı çakışma saldırıları bulunsa bile güvenli kalır — HMAC, dijital bir imzanın yaptığı gibi çakışma direncine dayanmaz. Gerçek dünyadaki riskler algoritmik değil operasyoneldir: zayıf veya sızdırılmış bir gizli anahtar, anahtarı loglamak ya da sabit zamanlı olmayan bir karşılaştırma kullanmak. Uzun rastgele bir anahtar kullanın ve etiketleri sabit zamanda karşılaştırın; HMAC-SHA256 dayanacaktır.
Neden burada HMAC-MD5 veya HMAC-SHA-3 yok?
Tasarım gereği. Bu araç yalnızca SHA-1, SHA-256, SHA-384 ve SHA-512 sunar, çünkü bunlar tarayıcının yerel Web Crypto API'sinin desteklediği hash fonksiyonlarıdır; bu da her şeyi hızlı ve ek kütüphane olmadan tamamen istemci tarafında tutar. HMAC-MD5 atlanmıştır çünkü MD5 eskimiştir ve yeni sistemlere onunla başlamamalısınız. HMAC-SHA-3 atlanmıştır çünkü Web Crypto SHA-3'ü uygulamaz; eklemek bir JavaScript polyfill'i göndermeyi gerektirir. Neredeyse tüm modern kullanım durumları için HMAC-SHA256 zaten doğru tercihtir.
HS256 (HMAC) vs RS256 (RSA) — JWT'ler için hangisini kullanmalıyım?
HS256, bir JWT'yi HMAC-SHA256 kullanarak tek bir paylaşılan gizli anahtarla imzalar ve doğrular; RS256 ise bir RSA özel anahtarıyla imzalar ve eşleşen genel anahtarla doğrular. Tokenları hem bir taraf düzenleyip hem doğruladığında (bir monolit ya da gizli anahtarı güvenle paylaşabilen güvenilir dahili servisler) HS256 kullanın — daha basit ve daha hızlıdır. Üçüncü taraflar veya birçok servisin tokenları doğrulaması ama üretememesi gerektiğinde RS256 kullanın, çünkü yalnızca genel anahtarı dağıtabilirsiniz. İkisinin de kodlanmış yapısını JWT olusturucuda inceleyebilirsiniz; HS256 imzası tam olarak başlık ve yük üzerindeki bir HMAC-SHA256'dır.

Bcrypt Karma Oluşturucu ve Doğrulayıcı

Güvenlik Araçları

bcrypt şifre karmalarını çevrimiçi oluşturun ve doğrulayın — ayarlanabilir maliyet, $2b$/$2a$/$2y$ önekleri. %100 tarayıcınızda; şifreniz asla yüklenmez.

JWT Çözücü

Güvenlik Araçları

Ücretsiz JWT çözücümüzle JWT token'larını online çözün. header, payload, signature, son kullanma, algoritma ve claim'leri anında inceleyin. %100 tarayıcıda çalışır — token'ınız cihazınızdan ayrılmaz. Kayıt yok, izleme yok.

JWT Oluşturucu ve Kodlayıcı

Güvenlik Araçları

Ücretsiz online JWT oluşturucu ve kodlayıcı. header ve payload'ı oluşturun, HS256, RS256 ya da ES256 ile anında imzalayın. %100 tarayıcıda çalışır — gizli anahtarınız ve özel anahtarınız cihazınızdan ayrılmaz.

Ücretsiz JWT Gizli Anahtar Oluşturucu — HS256/384/512

Güvenlik Araçları

HS256/384/512 için güçlü, RFC uyumlu bir JWT gizli anahtarı üretin. %100 tarayıcınızda; base64url, base64 veya hex; .env için tek tıkla kopyalayın.

MD5 Özet Üretici ve Dosya Sağlama Aracı

Güvenlik Araçları

MD5, SHA-256, SHA-1 ve SHA-512 özetlerini online ücretsiz üretin. Tarayıcınızda metin veya dosya özeti alın, sağlama değerlerini doğrulayın ve sonuçları kopyalayın. Kayıt gerekmez.

Rastgele Şifre Üretici — Özelleştirilebilir ve Güvenli

Güvenlik Araçları

Anında güçlü rastgele şifreler üretin — ücretsiz, %100 tarayıcınızda. Uzunluk ve karakterleri özelleştirin, entropi analiziyle 50'ye kadar toplu üretim.