İçeriğe geç

Hash Oluşturucu rehberi

Araç rehberi. Güncellendi .

Kriptografik hash ve HMAC nedir, XGM Hash Oluşturucu hangi algoritmaları hesaplar, MD5 ile SHA-1 ne zaman kabul edilebilir ve ne zaman değildir.

Bir hash fonksiyonu ne yapar

Kriptografik bir hash fonksiyonu, her boyuttaki girdiyi özet adı verilen sabit boyutlu bir çıktıya eşler. İyi hash fonksiyonları tek yönlüdür (özetten girdiyi geri elde edemezsiniz), çakışmaya dayanıklıdır (aynı özeti veren iki farklı girdi bulamazsınız) ve değişime duyarlıdır (tek bir bitin tersine dönmesi çıktı bitlerinin yaklaşık yarısını değiştirir). Bu özellikler hash'leri sağlama toplamları, imzalar, yinelenen veriyi ayıklama ve bütünlük kontrolleri için kullanışlı kılar. Özetin uzunluğu her zaman sabittir: girdi tek bir harf de olsa gigabaytlarca dosya da olsa SHA-256 her ikisi için de 256 bitlik bir değer üretir.

Hash bir şifreleme değildir. Ortada anahtar yoktur ve çözülecek bir şey yoktur; özet yalnızca girdiyi tanımlar. Yaygın parolalar gibi kısa ya da tahmin edilebilir girdiler, tahminler hash'lenip karşılaştırılarak bulunabilir; tek başına hash'lemenin sırları korumamasının nedeni budur. Aynı sebeple bir e-posta adresinin ya da telefon numarasının özeti de anonim sayılmaz, çünkü olası değerlerin tamamı denenip eşleştirilebilir.

Hash ile HMAC karşılaştırmasıHash yalnızca iletiyi alır; HMAC ise iletiyi gizli bir anahtarla birleştirir, böylece özeti yalnızca anahtara sahip biri üretebilir ya da doğrulayabilir.Girdi metniTarayıcınızda UTF-8 baytları olarak kodlanırHash: SHA-256(ileti)Herkes hesaplayabilir; içeriği kanıtlar, kiminürettiğini değilHMAC: HMAC-SHA256(anahtar, ileti)Gizli anahtar gerekir; hem içeriği hem deanahtarın bilindiğini kanıtlarHex özetSHA-256 için 64, SHA-512 için 128 onaltılıkkarakter
Hash yalnızca iletiyi alır; HMAC ise iletiyi gizli bir anahtarla birleştirir, böylece özeti yalnızca anahtara sahip biri üretebilir ya da doğrulayabilir.

Hash Oluşturucu nasıl kullanılır

  1. Hash Oluşturucu aracını açın ve metni yazın ya da yapıştırın. Klasik test cümlesini görmek için Örnek yükle düğmesine basın.
  2. Her algoritmanın özeti hex dizeleri hâlinde görünür.
  3. HMAC özetlerini hesaplamak için "Gizli anahtarla HMAC" seçeneğini işaretleyin ve anahtarı girin.
  4. İhtiyacınız olan özeti kopyalayın ya da hepsini birden dışa aktarın.

Girdi UTF-8 olarak hash'lenir. Aynı metnin başka bir kodlamayla yazılmış hâli ya da bir düzenleyicinin sonuna eklediği satır sonu, farklı bir özet üretir. Bir komut satırı aracından gelen özetle karşılaştırırken her iki tarafın da tam olarak aynı baytları hash'lediğinden emin olun. Uygulamada en sık görülen iki fark, görünmeyen bir satır sonu ile Windows'un CRLF satır sonlarıdır.

Komut satırında özetleri eşleştirmek
# no trailing newline: printf, not echo
printf '%s' 'The quick brown fox jumps over the lazy dog' | sha256sum
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592  -

# HMAC-SHA256
printf '%s' 'message' | openssl dgst -sha256 -hmac 'secret-key'

Algoritmalar ve hangisi ne zaman kullanılır

Oluşturucunun hesapladığı algoritmalar
AlgoritmaÖzet boyutuDurumKullanım alanı
MD5128 bit (32 hex)Kırık: çakışmalar pratikte üretilebiliyorGüvenlik amacı taşımayan sağlama toplamları, eski tanımlayıcılar
SHA-1160 bit (40 hex)Kırık: çakışmalar gösterildiYalnızca eski sistemlerle uyumluluk
SHA-256256 bit (64 hex)GüvenliBütünlük kontrolleri, imzalar, genel kullanım
SHA-384384 bit (96 hex)GüvenliPolitikaların daha uzun SHA-2 özetleri istediği yerler
SHA-512512 bit (128 hex)GüvenliGenel kullanım; 64 bit sistemlerde çoğu zaman hızlıdır
SHA3-224 ile SHA3-512224 ile 512 bitGüvenliBir politikanın açıkça SHA-3 istediği yerler (FIPS 202); Web Crypto değil, sayfanın kendisi hesaplar

"Kırık" ifadesi, bir saldırganın aynı özeti veren iki farklı girdi üretebildiği anlamına gelir. Bu durum, sertifikalarda, kod imzalamada ya da belge bütünlüğünde olduğu gibi bir hash içeriğe güvenmek için kullanıldığı her yerde önemlidir. İndirilen bir dosyadaki kazara bozulmayı tespit etmek gibi, kimsenin bilerek çakışma üretmeye çalışmadığı durumlarda ise çok daha az önemlidir; bazı dosyalar için hâlâ MD5 sağlama toplamı yayımlanmasının nedeni budur. Yine de yeni bir işe başlarken tercihinizi SHA-256'dan yana kullanın: gözle görülür biçimde yavaş değildir ve ileride algoritmayı değiştirme zahmetinden sizi kurtarır.

Parolaları asla düz hash olarak saklamayın

SHA-256 gibi hızlı hash'ler, saldırganların sızdırılmış bir veritabanına karşı saniyede milyarlarca tahmin denemesine olanak tanır. Parolaları, OWASP'ın önerdiği gibi Argon2id, scrypt veya bcrypt gibi yavaş ve tuzlanmış bir parola hash'leme fonksiyonuyla saklayın.

HMAC: anahtarlı hash'ler

HMAC (RFC 2104), bir hash fonksiyonunu gizli bir anahtarla birleştirir. Aynı anahtarı bilen alıcı HMAC'i yeniden hesaplar ve karşılaştırır; sonuçların eşleşmesi, iletinin değiştirilmediğini ve anahtara sahip biri tarafından üretildiğini kanıtlar. Webhook'lar, API isteklerinin imzalanması ve HS256 kullanan JWT'lerin tamamı HMAC'e dayanır. Düz bir hash bu güvenceyi veremez, çünkü iletiyi değiştiren biri özeti de yeniden hesaplayıp yerine koyabilir.

HMAC nerede kullanılır
KullanımNasıl
Webhook imzalarıGönderen bir başlığa HMAC-SHA256(secret, body) değerini koyar; alıcı bunu yeniden hesaplar
API isteklerinin imzalanmasıKanonik istek dizesi bir erişim gizli anahtarıyla imzalanır
JWT HS256Başlık ve yük üzerinde HMAC-SHA256
Çerez veya token bütünlüğüSunucu bir değeri imzalar, böylece istemciler onu değiştiremez

Kodda bir HMAC'i doğrularken özetleri normal bir dize karşılaştırmasıyla değil, sabit zamanlı bir karşılaştırma fonksiyonuyla kıyaslayın; aksi hâlde zamanlama üzerinden bilgi sızabilir. Uzun ve rastgele bir anahtar kullanın, açığa çıkmış olma ihtimali varsa anahtarı değiştirin. Oluşturucuya yazdığınız anahtar sayfada kalır ve hiçbir yere gönderilmez. Anahtarı ortak bir kod deposuna ya da istemci tarafında çalışan koda koymayın; oraya konan bir anahtar artık gizli değildir.

Hash'lerin günlük hayattaki kullanımları

Hash'lerin karşınıza çıktığı yerler
KullanımÖrnekBugün kullanılan algoritma
Dosya bütünlüğüİndirme bağlantısının yanındaki sağlama toplamıSHA-256
İçerik adreslemeGit nesneleri, konteyner imajı katmanlarıEski Git depolarında SHA-1, imajlarda SHA-256
Önbellekleme ve ETag'lerYanıt gövdesinin parmak iziHerhangi bir hızlı hash; güvenlik gerekmez
Yinelenen veriyi ayıklamaAynı dosyanın yeniden yüklendiğini tespit etmekSHA-256
Subresource IntegrityBetik etiketlerinde integrity="sha384-…"SHA-256, SHA-384 veya SHA-512 (base64)
Dijital imzalarTLS sertifikaları, kod imzalamaİmzanın içinde SHA-256 veya daha güçlüsü

Subresource Integrity, güvenlik amaçlı kullanımın iyi bir örneğidir: sayfa, bir CDN'den yüklenen betiğin beklenen hash'ini listeler ve tarayıcı, dosyanın hash'i farklıysa dosyayı çalıştırmayı reddeder. SRI değerlerinin base64 kodlanmış özetler olduğunu, oluşturucunun ise aynı değerleri hex gösterdiğini unutmayın; baytlar aynıdır, yalnızca kodlama farklıdır. Aynı mantık konteyner imajlarında sabitlenen özetler için de geçerlidir: etiket değişebilir ama özet aynı içeriği gösterir.

İndirilen dosyaları sağlama toplamıyla doğrulamak

Projeler çoğu zaman indirme bağlantılarının yanında SHA-256 sağlama toplamları yayımlar. İndirdikten sonra dosyanın hash'ini yerel olarak hesaplayın ve yayımlanan değerle karşılaştırın. Değerlerin eşleşmesi, dosyanın bozulmadığını ve başka bir dosyayla değiştirilmediğini gösterir; yeter ki sağlama toplamının kendisi güvenilir bir sayfadan, tercihen projenin https://downloads.example.com gibi kendi HTTPS adresinden gelmiş olsun. Sağlama toplamı dosyanın indirildiği yerde duruyorsa, o sunucuya erişen biri her ikisini birden değiştirebilir; bu yüzden imzalanmış bir sağlama toplamı listesi çok daha güçlü bir güvencedir.

İndirilen bir dosyayı kontrol etmek
# Linux
sha256sum example-installer.tar.gz

# macOS
shasum -a 256 example-installer.tar.gz

# Windows PowerShell
Get-FileHash .\example-installer.zip -Algorithm SHA256

Oluşturucu, yapıştırdığınız metin üzerinde çalışır. Dosyaları yukarıdaki komutlarla yerel olarak hash'leyin; bu yöntem büyük dosyaları bir tarayıcı sekmesine yüklemekten kaçınır ve çevrimdışı da çalışır. Birden fazla dosyayı tek seferde kontrol etmeniz gerekiyorsa sha256sum -c komutu, yayımlanmış bir sağlama toplamı listesini satır satır doğrular.

SSS

Metnim bir yere yükleniyor mu?

Hayır. Hash'leme tarayıcınızda Web Crypto API ile çalışır (MD5 JavaScript ile) ve girdi hiçbir yere gönderilmez.

Bir hash geri çevrilebilir mi?

Matematiksel olarak hayır. Kısa ya da yaygın girdiler, adaylar hash'lenerek tahmin edilebilir; bu yüzden parolaların veya basit değerlerin özetleri gizli sayılmaz.

Hash'im neden başka bir araçtakinden farklı?

Baytlar farklıdır: sondaki bir satır sonu, farklı bir metin kodlaması ya da Windows satır sonları. İki tarafta da tam olarak aynı baytları hash'leyin.

SHA-256 parolalar için güvenli mi?

Hayır. Fazla hızlıdır. Her parola için benzersiz bir tuzla Argon2id, scrypt veya bcrypt kullanın.

SHA-256 ile SHA-512 arasındaki fark nedir?

Özet boyutu ve iç sözcük boyutu. İkisi de güvenli SHA-2 fonksiyonlarıdır; SHA-512 daha uzun bir özet üretir ve 64 bit işlemcilerde daha hızlı olabilir.

MD5 hâlâ işe yarar mı?

Kazara bozulmayı tespit etmek ya da güvenlik amacı taşımayan bir tanımlayıcı olarak evet. Birinin bilerek çakışma üretebileceği hiçbir yerde hayır.

Tuz nedir?

Her parola özetiyle birlikte saklanan rastgele bir değerdir; aynı parolaların farklı özetler almasını sağlar. Önceden hesaplanmış tabloları etkisiz kılar ama hızlı bir hash'i yavaşlatmaz.

Oluşturucu SHA-3 destekliyor mu?

Evet. “SHA-3 de göster” seçeneğini açtığınızda SHA3-224, SHA3-256, SHA3-384 ve SHA3-512 eklenir. Web Crypto’da SHA-3 bulunmadığı için bu dördü sayfanın kendi FIPS 202 uygulamasıyla hesaplanır; bu da yerleşik hash’lerden yavaştır, varsayılan olarak kapalı olmalarının nedeni budur.

Aynı metin için neden farklı uzunlukta çıktılar var?

Her algoritmanın sabit bir özet boyutu vardır: MD5 için 32, SHA-1 için 40, SHA-256 için 64, SHA-384 için 96 ve SHA-512 için 128 onaltılık karakter. Uzunluk, girdinin boyutu hakkında hiçbir şey söylemez.

Bu araçla bir dosyayı hash'leyebilir miyim?

Evet. “Bir dosyayı hash’le” dosyayı tarayıcınızda okur ve baytlarını yerelde sha256sum, shasum -a 256 ya da Get-FileHash ne yapıyorsa aynı şekilde hash’ler; hiçbir şey yüklenmez. Çok büyük dosyalar için komut satırı aracı yine de daha hızlıdır.

Bir HMAC anahtarı ne kadar uzun olmalı?

En az özet kadar uzun, örneğin HMAC-SHA256 için 32 rastgele bayt. Daha uzun anahtarlar zarar vermez; kısa ve tahmin edilebilir anahtarlar verir.

Kaynaklar