MD5 Hash Hesaplama

Metni yazın ya da dosya seçin; MD5, SHA-1, SHA-256 ve SHA-512 özetleri anında çıkar. Her şey tarayıcınızda hesaplanır, verileriniz hiçbir yere gönderilmez.

Hesaplama tamamen tarayıcınızda yapılır; metin ya da dosya hiçbir yere gönderilmez. SHA özetleri tarayıcının Web Crypto API'si ile, MD5 sayfadaki JavaScript koduyla hesaplanır.
MD5 ve SHA-1 çakışma saldırılarına açıktır. Parola saklamak ya da imza güvenliği için kullanmayın; parolalar için bcrypt, scrypt ya da Argon2 gibi tuzlu ve yavaş yöntemler gerekir. Bu araç dosya bütünlüğü kontrolü ve merak içindir.

Hash nedir ve nasıl çalışır

Hash özeti, bir veriyi sabit uzunlukta bir karakter dizisine dönüştüren işlemin çıktısıdır. Bu işlemi yapan algoritmaya hash fonksiyonu denir. Girdi ne kadar uzun olursa olsun, çıktı her zaman aynı uzunluktadır. Bir harfi bile değiştirirseniz çıktı tamamen farklı görünür; buna çığ etkisi denir.

Hash fonksiyonları tek yönlüdür. Çıktıdan girdiye geri dönemezsiniz. Bu yüzden hash, şifreleme değildir; şifrelenmiş veri anahtar ile çözülebilir, ama hash çözülmez. "MD5 çözme" veya "SHA çözme" iddiasıyla hizmet veren siteler aslında girdileri önceden hesaplayıp bir tabloya koyan yerlerdir. Girdiniz o tabloda yoksa hiçbir şey bulamazlar.

Hashing'in yaygın kullanım alanları şunlardır: dosya bütünlük doğrulaması, veri tabanında parola saklama, dijital imza ve sertifika sistemleri, veri yapılarında hızlı arama.

MD5, SHA-1, SHA-256 ve SHA-512: farklar

Dört algoritmanın çıktı uzunlukları ve güvenlik durumları birbirinden farklıdır. Aşağıdaki tablo temel özellikleri özetlemektedir.

Algoritma Çıktı uzunluğu Hex karakter sayısı Güvenlik durumu
MD5 128 bit 32 Çakışma saldırısına açık
SHA-1 160 bit 40 Çakışma kanıtlandı, 2017
SHA-256 256 bit 64 Güncel, güvenli
SHA-512 512 bit 128 Güncel, güvenli

MD5, Ron Rivest tarafından RFC 1321 ile 1992'de yayımlandı. Hız odaklı tasarlandı ve uzun yıllar dosya doğrulamada standart olarak kullanıldı. 2004'te Xiaoyun Wang ve ekibi, farklı iki dosyanın aynı MD5 özetini üretmesini sağlayan bir yöntem gösterdi. Buna çakışma saldırısı denir.

SHA-1, ABD Ulusal Güvenlik Ajansı tarafından tasarlandı ve NIST FIPS 180 standardı kapsamında yayımlandı. 2017'de Google ve Hollanda'daki CWI araştırma enstitüsü, "SHAttered" adını verdikleri çalışmayla SHA-1'e karşı ilk pratik çakışmayı kamuoyuna duyurdu. Bu tarihten sonra tarayıcılar ve işletim sistemleri SHA-1 imzalı sertifikaları reddeder hale geldi.

SHA-256 ve SHA-512, SHA-2 ailesinin üyesidir. Her ikisi de NSA tasarımı olup NIST FIPS 180-4 standardına dahildir. Bilinen bir çakışma saldırısı yoktur ve şu an aktif güvenlik uygulamaları için önerilen seçeneklerdir.

Örnek özetler

Boş bir metnin MD5 özeti d41d8cd98f00b204e9800998ecf8427e şeklindedir. Bu, girdi sıfır bayt olduğunda bile hash fonksiyonunun bir çıktı ürettiğini gösterir.

"abc" metni için özetler şöyledir:

  • MD5: 900150983cd24fb0d6963f7d28e17f72
  • SHA-1: a9993e364706816aba3e25717850c26c9cd0d89d
  • SHA-256: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

Üç özetin de tamamen farklı göründüğüne dikkat edin. Üstelik "abc" ile "Abc" gibi yalnızca büyük-küçük harf farkı olan iki metin, birbiriyle hiç ilişkili olmayan çıktılar üretir. Bu çığ etkisinin somut bir örneğidir.

Araç, metin girerken özetleri anında hesaplar. Türkçe karakterler UTF-8 kodlamasıyla bayta çevrilir, ardından hesaplama yapılır. Yani "şehir" ve "sehir" farklı özetler verir.

Dosya doğrulama nasıl yapılır

Güvenilir bir kaynaktan yazılım veya büyük dosya indirdiğinizde, kaynak genellikle dosyanın SHA-256 ya da MD5 özetini de yayımlar. İndirdiğiniz dosyanın özetini hesaplayıp bu değerle karşılaştırırsanız dosyanın bozulmadan ya da değiştirilmeden ulaştığını anlarsınız.

Bunu yapmak için:

  1. Kaynaktaki beklenen özet değerini bir yere not edin.
  2. İndirdiğiniz dosyayı araca yükleyin.
  3. Hesaplanan özeti karşılaştırma kutusuna yapıştırın.
  4. Araç hangi algoritmayla eşleştiğini veya eşleşmediğini gösterir.

Dosya hiçbir sunucuya yüklenmez. Hesaplama tamamen yerel olarak, tarayıcının içinde gerçekleşir. Çok büyük dosyalarda, yaklaşık 1 GB üstünde, tarayıcı belleği yetersiz gelebilir; bu durumda araç sizi uyarır.

Dosya doğrulama, indirilen paketin orijinalliğini kontrol etmenin en basit yoludur. Öte yandan bu yöntem dosyanın güvenli olduğunu değil, yalnızca aktarım sırasında değişmediğini kanıtlar. Kötü niyetli biri kaynaktaki dosyayı ve özetini birlikte değiştirirse doğrulama işe yaramaz. Bu nedenle özeti, indirdiğiniz yerden değil bağımsız bir kaynaktan almanız daha güvenlidir.

MD5 ve SHA-1 neden hâlâ kullanılıyor

Güvenlik açıkları bilinmesine rağmen bu iki algoritma bazı alanlarda yaygın kalmaya devam ediyor. Bunun birkaç nedeni var.

Birincisi, çakışma saldırısı her kullanım senaryosunu etkilemez. Bir dosyayı kendiniz hesaplayıp aynı araçla doğruluyorsanız ve dosya üçüncü bir taraftan geçmiyorsa MD5 de yeterlidir. Tehdit, birinin kasıtlı olarak iki farklı dosyaya aynı özeti üretecek şekilde dosyaları hazırlamasından kaynaklanır.

İkincisi, eski sistemlerin güncellenmesi zaman ve maliyet gerektirir. Kurumsal yazılımların bir kısmı MD5 ile doğrulama yaptığını sabit kodlamış biçimde çalışmaya devam etmektedir.

Yeni dosyalar veya yazılımlar için SHA-256 tercih edilmesi önerilir. Tarayıcı uyumluluğu için araçtaki SHA hesaplamaları Web Crypto API'sini kullanır. MD5 ise sayfada çalışan küçük bir JavaScript uygulamasıyla hesaplanır. Her iki durumda da hiçbir veri sunucuya gönderilmez.

Hash, şifreleme ve kodlama farkı

Bu üç kavram sık karıştırılır ama farklı şeyler anlatır.

Şifreleme, bir anahtarla veriyi gizleyen ve doğru anahtarla geri açılabilen bir işlemdir. AES veya RSA algoritmaları buna örnektir. Hash ise tek yönlüdür; geri dönüş yoktur.

Kodlama, veriyi farklı bir biçimde temsil etmek içindir. İkilik sayı çevirici ile bir metni sıfır ve birlerden oluşan diziye dönüştürebilirsiniz. Bu gizleme değildir; herhangi biri aynı kurallarla metni geri çevirebilir. Base64 de aynı mantıkla çalışır: veriyi farklı karakterlerle temsil eder, gizlemez.

Hash ise ne veriyi gizler ne de farklı biçimde temsil eder. Girdiyi sindirip sabit uzunlukta bir parmak izi üretir. O parmak izinden girdiye ulaşmak mümkün değildir.

Özetle: şifreleme gizler ve açar; kodlama biçim değiştirir ve geri çevrilir; hash özetler ve tek yönlüdür.

Güvenlik uyarısı: parola saklama için hash kullanmayın

MD5 ve SHA ailesi, hızlı çalışmak için tasarlanmıştır. Bu hız, saldırganlar için bir avantajdır. Modern grafik işlemciler saniyede milyarlarca MD5 özeti üretebilir. Bu nedenle sızdırılmış bir MD5 veritabanını kaba kuvvetle kırmak oldukça hızlıdır.

Parola saklamak için bcrypt, scrypt veya Argon2 gibi kasıtlı olarak yavaş ve tuzlama yapan algoritmalar kullanılmalıdır. Bu algoritmalar her parola için rastgele bir tuz üretir ve hesaplama süresini kasıtlı olarak uzatır. Bu nedenle MD5 ile saklanan bir parolayı kırmak çok daha kolayken bcrypt ile saklanan birini kırmak çok daha uzun sürer.

Bu araç parola özeti veya tuzlama yapmaz. Yalnızca girdiğiniz metnin veya dosyanın dört farklı algoritmaya göre özetini hesaplar.

Güçlü ve rastgele parola üretmek istiyorsanız şifre üretici aracını kullanabilirsiniz. Oradan ürettiğiniz parolayı asla MD5 veya SHA-1 ile saklamamalısınız; uygulamanızda bcrypt gibi bir kütüphane tercih edin.

Araçtaki özellikler

Araç iki sekmeli çalışır. Metin sekmesinde yazdığınız her karakter sonunda özeti anında günceller. Dosya sekmesinde seçtiğiniz dosyayı tarayıcıda yerel olarak işler.

Her özet için ayrı bir kopyala düğmesi bulunur. Hex çıktısını büyük veya küçük harfle görmek için geçiş yapabilirsiniz. Bu seçenek bazı sistemlerle karşılaştırma yaparken işe yarar; bazı araçlar özetleri büyük harfle yazar.

Karşılaştırma kutusu, beklediğiniz özeti yapıştırmanıza ve aracın hangi algoritmayla eşleştiğini söylemesine olanak tanır. Eşleşme yoksa araç bunu açıkça belirtir.

Veri boyutu ve ilgili hesaplamalar

Hash çıktısının bit ve bayt olarak ne anlama geldiğini merak ediyorsanız veri boyutu çevirici ile birimleri dönüştürebilirsiniz. Örneğin SHA-512 çıktısı 512 bit yani 64 bayttır. Bunun 128 hex karaktere dönüşmesinin nedeni, her baytın iki hex karakterle gösterilmesidir.

Belirli bir girdi için kaç karakter ya da kelime olduğunu merak ediyorsanız kelime ve karakter sayacı aracından yararlanabilirsiniz. Uzun metinlerin özetini hesaplamadan önce boyutunu kontrol etmek isteyenler için pratik bir adımdır.

Hash değerleri genellikle onaltılık sayı sistemiyle gösterilir. Onaltılık sistemi tanımak istiyorsanız sayı dönüşümlerine binary çevirici ile başlayabilirsiniz. Onluk, ikilik ve onaltılık arasındaki geçişleri görmek, hash çıktısını daha anlamlı kılar.

Rastgele test girdileri üretmek veya belirli uzunlukta örnek metinler oluşturmak için rastgele sayı üretici ya da metin analizi aracı kullanılabilir.

Hesaplamalar sırasında veri boyutu konusunda kesin bilgiye ihtiyaç duyulduğunda veri boyutu çevirici ile bit, bayt, kilobayt ve megabayt arasında geçiş yapabilirsiniz.

Sıkça Sorulan Sorular

MD5 128 bit uzunlukta bir özet üretir ve 32 hex karakterle gösterilir. SHA-256 ise 256 bit uzunlukta bir özet üretir ve 64 hex karakterle gösterilir. Güvenlik açısından MD5'e karşı pratik çakışma saldırıları gösterilmiştir; SHA-256 için bilinen bir çakışma yoktur. Dosya doğrulama ve güvenlik uygulamaları için SHA-256 tercih edilmelidir.

Hayır, ikisi farklı kavramlardır. Şifreleme bir anahtarla veriyi gizler ve doğru anahtarla tekrar açılabilir. Hash ise tek yönlüdür: girdiyi sabit uzunlukta bir özete dönüştürür ve bu özetten girdiye geri dönülemez. Hash çıktısı gizlilik sağlamaz, bütünlük doğrular.

İnternet üzerinden indirdiğiniz büyük dosyalar aktarım sırasında bozulabilir. Yazılım dağıtıcıları genellikle dosyanın beklenen MD5 veya SHA-256 özetini yayımlar. İndirdiğiniz dosyanın özetini hesaplayıp bu değerle karşılaştırarak dosyanın tam ve değişmemiş ulaştığını doğrulayabilirsiniz.

Kullanmamanız önerilir. MD5 hızlı çalışmak için tasarlanmıştır; bu hız saldırganların kısa sürede milyarlarca deneme yapmasını kolaylaştırır. Parola saklamak için bcrypt, scrypt veya Argon2 gibi kasıtlı yavaş ve tuzlama yapan algoritmalar kullanılmalıdır. Bu araç parola özeti oluşturma işlemi yapmaz.

Hayır. SHA hesaplamaları tarayıcının yerleşik Web Crypto API'si ile, MD5 hesaplaması ise sayfada çalışan küçük bir JavaScript kodu ile yapılır. Dosya veya metin hiçbir sunucuya gönderilmez. Her şey yalnızca sizin tarayıcınızda gerçekleşir.

Buna çakışma denir. Sonsuz sayıda farklı giriş, sonlu sayıda hash değeriyle temsil edildiğinden teorik olarak çakışma kaçınılmazdır. MD5 ve SHA-1 için araştırmacılar kasıtlı olarak çakışma üretmeyi başardı. Bu durum söz konusu algoritmaların dijital imza gibi güvenlik kritik alanlarda kullanılmaması gerektiğini gösterir.

İlgili Araçlar