RevealTheme logo

Hash Oluşturucu (MD5 / SHA)

Kriptografik hash'ler oluşturun: MD5, SHA-1, SHA-256, SHA-384 ve SHA-512. Web Crypto API aracılığıyla tarayıcınızda çalışır.

Kriptografik hash'ler nedir ve ne zaman ihtiyaç duyarsınız?

Kriptografik hash fonksiyonu, herhangi bir girişi (birkaç bayt, birkaç gigabaytlık bir dosya veya İngilizce Wikipedia'nın tamamı) 'özet' (digest) veya 'hash' adı verilen sabit boyutlu bir çıktıya dönüştüren deterministik bir algoritmadır. SHA-256 256 bit (64 onaltılık karakter) üretir; SHA-512 512 bit üretir; MD5 128 bit üretir. Dört özellik, bir hash'i (CRC32 gibi) kriptografik olmayan bir hash'ten ayırarak 'kriptografik' yapar: determinizm (aynı giriş → her zaman aynı hash), çığ etkisi (tek bir biti değiştirmek çıkış bitlerinin yaklaşık yarısını değiştirir), ön görüntü direnci (girişi geri elde etmek için hash'i tersine çeviremezsiniz) ve çakışma direnci (aynı hash'i üreten iki giriş bulamazsınız). Bir hash fonksiyonu kırıldığında, genellikle bu son iki özellik çöker: MD5'e (2004) ve SHA-1'e (2017) karşı yapılan çakışma saldırıları, bunları güvenlik amaçları için uygunsuz hale getirdi; ancak dosya sağlama toplamları gibi düşmanca olmayan bütünlük kontrolleri için hâlâ kullanılabilirler. Yeni bir güvenlik işi için SHA-256 veya SHA-512 kullanın. Bu araç, modern cihazlarda donanım hızlandırmalı olan tarayıcının Web Crypto API'sini (crypto.subtle.digest) kullanır ve OpenSSL, Python'un hashlib modülü ve Node'un crypto modülüyle bayt bayt aynı çıktıyı üretir.

Yaygın kullanım örnekleri

  • İndirilen bir dosyanın yayıncının listelediği SHA-256 ile eşleştiğini doğrulayın (Linux ISO'ları, güvenlik aracı sürümleri).

  • Önbellek anahtarları için içeriğe dayalı bir tanımlayıcı oluşturun (içeriğin hash'i → kararlı URL).

  • Dosyaları depolamak için bir tekilleştirme anahtarı oluşturun (hash eşleşiyorsa = aynı dosya).

  • Webhook imza doğrulaması oluşturun — paylaşılan gizli anahtarla payload'ın HMAC-SHA256'sı.

  • Git tarzı içerik hash'leri üretin (tree/blob tanımlayıcıları için SHA-1).

  • Anahtar sütunları hash'leyip hash'i saklayarak bir veritabanı satırının bütünlüğünü doğrulayın.

Sıkça sorulan sorular

MD5 güvenlik için neden eskimiştir?
Kriptograflar, aynı MD5'i üreten iki farklı giriş oluşturmanın yollarını buldular. Çakışmalar bulunabilir hale geldiğinde, MD5 düşmanca senaryolarda güvenilir bir bütünlük sinyali olmaktan çıkar (biri bir dosyayı değiştirip aynı hash'e sahip başka bir dosya üretebilir). Düşmanca olmayan sağlama toplamları için (dosya doğru indirildi mi?), MD5 hâlâ iyi çalışır; yalnızca dijital imzalar veya bir saldırganın etkileyebileceği herhangi bir şey için güvenli değildir.
Hash'ler tersine çevrilebilir mi?
Doğrudan değil: kriptografik hash'ler tek yönlü fonksiyonlardır. Ancak: (1) kısa veya düşük entropili girişler için (parolalar, yaygın ifadeler), bir saldırgan olası her girişin hash'lerini önceden hesaplayabilir (gökkuşağı tabloları) ve sizinkini arayabilir. Bu nedenle parola hash'leme benzersiz rastgele tuzlar (salt) kullanır. (2) Keyfi uzunlukta ve yüksek entropili girişler için (rastgele anahtarlar, dosya içeriği), tersine çevirme hesaplama açısından olanaksızdır.
SHA-256 ile HMAC-SHA256 arasındaki fark nedir?
SHA-256 basit bir hash'tir: girişe sahip olan herkes aynı hash'i hesaplayabilir. HMAC-SHA256 ise anahtarlı bir hash'tir: hesaplamak için paylaşılan bir gizli anahtara ihtiyacınız vardır. Webhook'lar HMAC kullanır; çünkü doğrulayıcı yalnızca 'yük bilinen bir değerle eşleşiyor mu?' değil, 'bunu gizli anahtarı bilen biri mi oluşturdu?' bilmek ister. Anahtarlı çeşit için HMAC Oluşturucumuzu kullanın.
SHA-256 yerine ne zaman SHA-512 kullanmalıyım?
SHA-512'nin daha fazla çıkış biti vardır (256'ya karşı 512); bu da çakışma saldırılarını teorik olarak daha zor hale getirir. Ancak SHA-256 zaten herhangi bir makul zaman diliminin çok ötesinde güvenlidir (çakışmalara karşı 2^128 etkin güç). SHA-512, daha geniş iç işlemleri nedeniyle 64 bitlik donanımda bazen daha hızlıdır. Varsayılan olarak SHA-256 kullanın; somut bir nedeniniz varsa SHA-512 kullanın.
SHA hash'im neden başka bir aracınkinden farklı?
Üç olası neden: (1) Farklı giriş kodlaması: hash'lenen baytlar eşleşmelidir. UTF-8, UTF-16 veya Latin-1, aynı görünür metin için farklı hash'ler üretir. Bu araç girişi UTF-8 olarak kodlar. (2) Son satır sonu: bazı araçlar bir satır sonu ekler, bazıları eklemez. (3) BOM (bayt sırası işareti): bazı düzenleyicilerin UTF-8 dosyalarına eklediği gizli üç baytlık bir ön ek.
Hassas verilerle kullanmak güvenli mi?
Evet: hash hesaplaması, Web Crypto aracılığıyla tarayıcınızda yerel olarak gerçekleşir. Giriş asla cihazınızdan çıkmaz. Hash'lerin kendisi, girişi açığa çıkarmadıkları anlamında 'hassas' değildir (yeterli entropi varsayılarak); ancak düşük entropili verilerin (tuzsuz parolalar gibi) hash'ini hesaplarsanız, hash'i gören herhangi birinin onu gökkuşağı tabloları aracılığıyla tersine çevirebileceğini unutmayın.

İlgili araçlar