Hash Oluşturucu rehberi
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 Oluşturucu nasıl kullanılır
- 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.
- Her algoritmanın özeti hex dizeleri hâlinde görünür.
- HMAC özetlerini hesaplamak için "Gizli anahtarla HMAC" seçeneğini işaretleyin ve anahtarı girin.
- İ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.
# 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
| Algoritma | Özet boyutu | Durum | Kullanım alanı |
|---|---|---|---|
| MD5 | 128 bit (32 hex) | Kırık: çakışmalar pratikte üretilebiliyor | Güvenlik amacı taşımayan sağlama toplamları, eski tanımlayıcılar |
| SHA-1 | 160 bit (40 hex) | Kırık: çakışmalar gösterildi | Yalnızca eski sistemlerle uyumluluk |
| SHA-256 | 256 bit (64 hex) | Güvenli | Bütünlük kontrolleri, imzalar, genel kullanım |
| SHA-384 | 384 bit (96 hex) | Güvenli | Politikaların daha uzun SHA-2 özetleri istediği yerler |
| SHA-512 | 512 bit (128 hex) | Güvenli | Genel kullanım; 64 bit sistemlerde çoğu zaman hızlıdır |
| SHA3-224 ile SHA3-512 | 224 ile 512 bit | Güvenli | Bir 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
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.
| Kullanım | Nası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 HS256 | Baş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ı
| Kullanım | Örnek | Bugün kullanılan algoritma |
|---|---|---|
| Dosya bütünlüğü | İndirme bağlantısının yanındaki sağlama toplamı | SHA-256 |
| İçerik adresleme | Git nesneleri, konteyner imajı katmanları | Eski Git depolarında SHA-1, imajlarda SHA-256 |
| Önbellekleme ve ETag'ler | Yanıt gövdesinin parmak izi | Herhangi bir hızlı hash; güvenlik gerekmez |
| Yinelenen veriyi ayıklama | Aynı dosyanın yeniden yüklendiğini tespit etmek | SHA-256 |
| Subresource Integrity | Betik etiketlerinde integrity="sha384-…" | SHA-256, SHA-384 veya SHA-512 (base64) |
| Dijital imzalar | TLS 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.
# Linux
sha256sum example-installer.tar.gz
# macOS
shasum -a 256 example-installer.tar.gz
# Windows PowerShell
Get-FileHash .\example-installer.zip -Algorithm SHA256Oluş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.