MD5 sonucu, yazdığınız metnin UTF-8 baytlarından hesaplanan 32 onaltılık karakterlik bir özettir. Bu sayfada metni kutuya yapıştırın, sonuç harflerinin küçük veya büyük gösterilmesini seçin ve hesabı çalıştırın. Araç metnin başındaki ve sonundaki boşlukları silmez; harfleri değiştirmez. Boş alan da hesaplanabilir. Varsayılan abc örneğinin sonucu 900150983cd24fb0d6963f7d28e17f72 olur.

Bu hesaplayıcının görevi metin özetini ve hesabın dayandığı uzunlukları göstermektir. Sonucu bir parolanın güvenli saklandığı, bir belgenin gerçek olduğu veya bir göndericinin doğrulandığı şeklinde yorumlamayın. MD5 çarpışmaya dayanıklı değildir. Gerçek parola, anahtar veya kişisel sır yerine eğitim metni kullanın. Araç dosya açmaz; dosyanın diskteki baytlarını doğrulamaz. Metin alanının okuduğu yazım üzerinde çalışır.

İlk hesabınızı üç adımda yapın

Metin kutusunda abc yazılıyken hesaplayın. Sonuç satırının altında üç UTF-8 veri baytı, üç Unicode kod noktası ve üç UTF-16 kod birimi görürsünüz. Bu üç sayının eşit olması kısa ASCII örneğinin özelliğidir. Türkçe harf veya emoji eklediğinizde aynı eşitliği beklemeyin. Sonuç başlığındaki uzun özet dizesi ile alttaki veri uzunluğunu ayrı okuyun.

Ardından yalnız çıktı biçimini büyük harfe çevirin. Sonuç 900150983CD24FB0D6963F7D28E17F72 biçiminde görünür. Girdi hâlâ abc'dir; ABC yapılmaz. Onaltılık yazımdaki küçük c ile büyük C aynı sayısal basamağı temsil eder. Bu seçenek okunabilirlik ve başka bir ekranın yazım biçimiyle karşılaştırma içindir. Sonucun 128 bitlik içeriği değişmez.

Son olarak metnin sonuna bir boşluk ekleyip yeniden hesaplayın. Boşluk veri olduğu için özet değişir. Önceki sonucu yeni metinle karşılaştırırken hesabı tekrar çalıştırdığınızdan emin olun. Bir ekranda abc, diğerinde abc ve ardından boşluk varsa aynı metni karşılaştırmıyorsunuzdur. Görsel olarak zor seçilen farkı bulmak için veri uzunluğunu da izleyin.

Metin ile bayt aynı ölçü değildir

Bir metni ekranda okumak, onun bellekte nasıl kodlandığını tek başına söylemez. Bu araçta MD5'e giden veri UTF-8 baytlarıdır. İngilizce a, b ve c harfleri birer baytla kodlanır. Büyük Türkçe İ iki bayt gerektirir. 🧮 emojisi dört UTF-8 baytıyla kodlanır. Ancak burada verilen bayt adetlerini görünen karakter adedi gibi kullanmayın.

İstanbul 🧮 örneğinde sekiz harf, bir boşluk ve bir emoji bulunur. Sonuç tablosunda 10 Unicode kod noktası, 11 UTF-16 kod birimi ve 14 UTF-8 baytı görülür. İ'nin iki baytı ve emojinin dört baytı toplamı artırır. Emoji UTF-16'da iki kod birimidir. Bu sayımlar aynı metne farklı ölçülerle bakar; biri diğerinin hatalı hali değildir.

Bir kullanıcı için tek sembol gibi görünen birleşik emoji veya aksanlı harf, birden çok kod noktasından da oluşabilir. MD5 tablosundaki “Unicode kod noktası” satırı bu nedenle görünen karakter sayısı olarak etiketlenmez. Görünen karakter, kelime, satır veya paragraf adedi arıyorsanız Kelime / Karakter Sayısı aracını kullanın. Metin özeti hesaplamakla dildeki kelimeleri saymak ayrı işlemlerdir.

Boş metnin neden bir sonucu vardır?

Boş metin, veri uzunluğu sıfır olan geçerli bir girdidir. Kutuyu tamamen temizleyip hesapladığınızda d41d8cd98f00b204e9800998ecf8427e sonucu çıkar. Bu sonuç, içinde boşluk bulunan metne ait değildir. Bir boşluk, bir sekme veya tek satır sonu sıfır baytlık metin olmaz. Girdi kutusu temiz görünse bile kopyaladığınız metnin görünmeyen öğelerini gözden geçirin.

Boş metinde sonuç uzunluğu yine 128 bittir ve onaltılık gösterim 32 karakterdir. Veri uzunluğu ile özet uzunluğunun bağımsız olduğunu bu örnek açıkça gösterir. abc için de, uzun bir paragraf için de çıktı 32 karakterdir. Araç bu sabit özet uzunluğunu veri sıkıştırma oranı veya geri açılabilir bir saklama yöntemi olarak sunmaz.

Sıfır baytlık girdi, algoritmanın hiç işlem yapmaması anlamına gelmez. MD5 kendi doldurma alanını ve uzunluk bilgisini hazırlayıp bir blok işler. Sonuç tablosundaki blok adedi bu yüzden boş metinde 1 olur. Bu ek alan kullanıcı metnine karakter olarak eklenmez; UTF-8 veri uzunluğu satırı doğru biçimde 0 bayt kalır.

Hesap adımlarındaki doldurmayı doğru okuyun

RFC 1321, mesajı 64 baytlık bloklarla işleyen MD5 algoritmasını tanımlar. Aracın adımlarında görülen doldurma, hesap için hazırlanan ek baytlardır. Önce 0x80 değeriyle başlayan alan, sonra özgün bit uzunluğunu taşıyan sekiz bayt eklenir. Doldurulmuş toplam uzunluk 64'ün katı olur. Sonuç satırındaki veri uzunluğu bu teknik ek alanlardan önce ölçülür.

Örneğin 3 baytlık abc için doldurulmuş uzunluk 64 bayttır. Kullanıcı verisi 3 bayt, doldurma 53 bayt ve özgün uzunluk alanı 8 bayt olduğundan toplam 64 çıkar. Uzunluk alanındaki sayı 24 bittir; çünkü üç veri baytı sekizer bit taşır. Araçta bu bilgiler adım olarak gösterilir, fakat sonucu kullanmak için doldurmayı kendiniz eklemeniz gerekmez.

55 baytlık ASCII metinde toplam hâlâ tek bloktur. 56 bayta çıkıldığında uzunluk alanına yer açılması için iki blok gerekir. 64 bayt veri de sonuna algoritma alanları eklenmeden işlenemez; iki blokla hesaplanır. Bu eşiklerde blok sayısının değişmesi hata değildir. Kullanıcı metninin uzunluğu 55'ten 56'ya çıktığında özet uzunluğu yine 32 karakter kalır.

Boşlukları ve satırları görünür farklar gibi değerlendirin

Metin kutusu girdiyi kırpmaz. Başta iki boşluk varsa bunlar korunur; sonda bir boşluk varsa o da UTF-8 verisine katılır. Sekme karakteri, normal boşlukla aynı değildir. Bölünmez boşluk da normal boşlukla aynı bayt dizisine sahip değildir. Bir metni başka uygulamadan kopyaladığınızda aynı görünen aralıkların gerçekten aynı yazımla oluştuğunu varsaymayın.

Satır sonları için ayrıca tarayıcı sınırını dikkate alın. Hesap motoru kendisine verilen CR, LF veya CRLF dizisini değiştirmez. Ancak tarayıcıdaki metin alanı, yapıştırılan satır sonlarını LF biçiminde okuyabilir. Bu nedenle bir dosyanın Windows satır sonlu özgün baytlarının sonucunu, dosyayı açıp metnini bu kutuya yapıştırarak doğruladığınızı söyleyemezsiniz. Sayfa dosya baytı aracı değildir.

İki satırlı bir örnekte ilk satır abc, ikinci satır def olsun. Kutudaki satır sonu da verinin parçasıdır. Son satırın sonunda ayrıca bir satır sonu bulunması başka bir girdidir. Bir metin düzenleyici dosyayı kaydederken otomatik son satır ekliyorsa, gördüğünüz içerik ile kaydedilen bayt dizisi ayrışabilir. Karşılaştırmayı hangi veri üzerinde yaptığınızı baştan belirleyin.

Aynı görünen Unicode yazımı aynı bayt olmayabilir

Önceden birleşmiş é harfi ile e harfinden sonra birleştirici vurgu işareti gelen yazım ekranda birbirine benzeyebilir. Bu araç bunları ortak bir biçime dönüştürmez. İlk yazım iki UTF-8 baytıyla, ikinci yazım üç baytla kodlanır. İlk özet 66ddcd97cfdeabb2f6fb8a999b4bc76f, ikinci özet 5526861fbb1e71a1bda6ac364310a807 olur. Fark, özgün yazımın korunmasının sonucudur.

Unicode UAX #15, normalizasyon biçimlerini açıklar. Buradaki hesaplayıcı NFC veya NFD dönüşümünü kendiliğinden uygulamaz. Başka bir uygulama özet almadan önce normalizasyon yapıyorsa, o uygulama farklı bir hazırlama kuralıyla çalışıyordur. İki sonucu kıyaslarken kullanılan algoritmaya ek olarak metnin hangi dönüşümlerden geçtiğini de öğrenin. Normalizasyon ayarı görünmeden yalnız özetin uyuşmaması üzerinden hata kararı vermeyin.

Büyük ve küçük harf ayrımı da korunur. Türkçe i, İ, ı ve I farklı girdilerdir. Özet biçimini büyük harfe almak bu harfler arasında dönüşüm yapmaz. Aracın metin kutusuna kendi istediğiniz harfi yazın; sonuç gösterim seçeneğini metin düzenleme düğmesi gibi kullanmayın. Benzer biçimde tırnak, kısa çizgi ve uzun çizgi arasındaki farklar da girişe dahildir.

Geçersiz bir Unicode parçası geldiğinde

Bazı emoji ve özel karakterler UTF-16'da iki kod biriminin birlikte oluşturduğu bir eşle temsil edilir. Eşin yalnız bir parçası kaldığında geçerli bir Unicode metni oluşmaz. Bu araç böyle bir parçayı başka bir sembole dönüştürüp o sembolün özetini vermek yerine metin alanında hata gösterir. Kaynak metni yeniden kopyalayın veya eksik parçayı düzeltin.

Bu denetim, her metnin anlamını veya yazım doğruluğunu kontrol eden bir editör değildir. Geçerli bir emoji, bilinmeyen bir sembol, görünmeyen biçimleme işareti veya metnin içine alınmış U+FEFF değeri girdiye katılabilir. Araç yalnız eşleşmemiş UTF-16 parçalarını reddeder. Metin kaynağınız beklenmedik bir görünmez karakter içeriyorsa, onun varlığını kendi düzenleyicinizde araştırmanız gerekir.

Kodlama desteği bulunmayan bir tarayıcıda da sonuç yerine açıklamalı bir alan hatası alınır. Başka bir kodlama biçimine sessizce geçilmez. Güncel bir tarayıcıyla tekrar deneyin. Aracın UTF-8 tanımı, çalıştığı ortamın gerekli kodlama işlevini sunmasına bağlıdır. Bir ortamda hesap yapılmaması, aynı metnin farklı MD5 sonucuna sahip olduğu anlamına gelmez.

İki özeti karşılaştırırken ne söyleyebilirsiniz?

Aynı metin, aynı UTF-8 kodlama ve aynı MD5 yöntemi aynı özeti verir. Çıktıdaki a–f harflerinin büyük veya küçük gösterilmesi bu eşitliği değiştirmez. İki onaltılık diziyi karşılaştırırken harf biçimini ortaklaştırmak uygundur; giriş metinlerini ortaklaştırmak ise farklı bir işlemdir. Sonuç biçimini değiştirmek ile metindeki farklılığı silmek arasındaki ayrımı koruyun.

Elinizde bilinen bir MD5 değeri varsa isteğe bağlı karşılaştırma alanına boşluksuz 32 onaltılık karakteri yazın. Küçük veya büyük harf kullanabilirsiniz. Alan boş bırakıldığında “Karşılaştırma yok”, iki özet aynıysa “Eşleşti”, farklıysa “Eşleşmedi” görülür. Bu alan girdi metnini değiştirmez ve ana sonuç her zaman hesaplanan özettir. İleri sürülen değerin kaynağını veya güvenilirliğini sorgulayan bir hizmet yapılmaz.

Yalnız 0–9 rakamları ve a–f harfleri geçerlidir; örneğin “yanlış” bir MD5 gösterimi değildir ve alan hatası verir. Baştaki boşluk, iki nokta, özetin yanına yazılmış dosya adı veya satır sonu eklemeyin. Kıyaslanan değer 32 karaktere tamamlanmış görünüyor olsa bile harf kümesini kontrol edin. Eşleşme, sadece girilen gösterimin hesaplanan MD5'e eşit olduğunu belirtir; metin kimliği veya güvenlik sonucu üretmez.

Farklı özetler, aynı yöntemle karşılaştırılan bayt girdilerinin farklı olduğunu gösterir. Fakat aynı MD5 özeti, iki metnin kesin olarak aynı olduğunu kanıtlamaz; farklı girdiler aynı özeti verebilir. RFC 6151'in güvenlik güncellemesi nedeniyle burada özgünlük, dijital imza veya kötü niyetli değişikliklere karşı doğrulama hizmeti sunulmaz. Sonuç yalnız bu sınırlı metin özeti hesabının çıktısıdır.

Bir eğitim örneğini not ederken metni, kodlamayı, özet biçimini ve veri uzunluğunu birlikte yazın. abc, UTF-8, küçük harf, 3 bayt açıklaması tek başına özetten daha anlaşılır bir kayıt olur. Uzun bir metni ekran görüntüsüne alırken görüntünün gerçekten paylaşılabilecek içerik taşıdığını kontrol edin. Araç bağlantısını paylaşmak ile hesapladığınız özel metni paylaşmak aynı şey değildir.

Sonucu kaydetme ve başka sitede kullanma

Hesaptan sonra ekran görüntüsü seçeneğiyle metin, sonuç ve yöntemi gösteren görsel hazırlayabilirsiniz. Görselde girdi de yer alabileceği için yalnız paylaşmayı istediğiniz metinle işlem yapın. Sonuç değişmeden önce aldığınız görüntü eski hesaba aittir. Metni düzenleyip yeni hesabı çalıştırdıktan sonra yeni görsel alın; aynı dosya adının içeriğin güncel olduğunu kendiliğinden kanıtlamadığını unutmayın.

“Sitenize ekleyin” seçeneği bu hesaplayıcıyı göstermek için gereken ekleme kodunu sunar. “Paylaş” seçeneği hesaplayıcının bağlantısını hazırlamaya yarar. Bu düğmeleri kullanmak MD5'i bir dosya doğrulama sistemine, kimlik hizmetine veya parola işleme aracına dönüştürmez. İçeriği sitenize yerleştirdiğinizde metin girdisi, UTF-8 açıklaması ve güvenlik kapsamının kullanıcı tarafından okunabilir kalması yararlıdır.

Bir sonuç başka araçla uyuşmadığında önce abc ve boş metin örnekleriyle yöntem uyumunu kontrol edin. Bu örnekler uyuşuyor, kendi metniniz uyuşmuyorsa boşluklar, son satır, kodlama, normalizasyon ve kopyalama sırasında değişen işaretleri sırayla inceleyin. Asıl metni değiştirerek rastgele denemek yerine her farkı ayrı bir kopyada deneyin. Böylece hangi hazırlama adımının sonucu etkilediğini açık biçimde görebilirsiniz.