md5 Neden Decode Edilemez Versiyon 2.10

soulmy php 24.Ağu.2012 464 görüntülenme 4 yorum

Daha önceden base64 ile nasıl encode ve decode yapıldığını ve md5 ile nasıl encode yapıldığını anlatmıştım. Bu konularda base64 ile şifrelenmiş verinin decode (yani deşifre etmek) edilebileceğini ama md5 ile şifrelenen verinin decode edilemeyeceğinden bahsetmiştim. Bu makalemde neden md5'in decode edilemeyeceğini anlatacağım.

Bunun için öncelikle base64 ile md5 encode işlemlerini karşılaştıralım.

Base64 Encode İşlemi

php kod:

echo base64_encode("123");
echo base64_encode("123456");

Ekran çıktısı:

MTIz 
MTIzNDU2

İlk satırda 3 haneli, ikinci satırda ise 6 haneli bir sayımız var. Bu sayıları encode işlemiyle şifreleyip ekran yazdırınca; ilk şifremiz 4, ikinci şifremiz ise 8 karakterli çıktı.

md5 Encode İşlemi

php kod:

echo md5("123");
echo md5("123456");

Ekran çıktısı:

202cb962ac59075b964b07152d234b70 
e10adc3949ba59abbe56e057f20f883e

Yine ilk satırda 3, ikinci satırda 6 haneli sayı kullandık ve bunları encode ederek ekrana yazdırdık. Bu sefer ise her ikisinde de 32 karakterden oluşan şifreler oluştu.

Karşılaştırma Sonucu

123 ve 123456 verilerini ayrı ayrı şifreleyip ekran yazdırdık. Ekran çıktılarına dikkatlice bakacak olursanız, base64'te 4 ve 8 karakterli şifreler oluşurken, md5'te ise her ikisinde de 32 haneli şifreler oluştu. Buradan şu sonuç çıkıyor:

  • base64'te bir verinin karakter sayısı arttıkça (123 ve 123456), oluşan şifrenin karakter sayısı (MTIz ve MTIzNDU2) da doğru orantılı olarak artıyor. Bu bize sonsuz sayıda şifre oluşturulabileceğini gösteriyor.
  • md5'te ise bir verinin karakter sayısı arttıkça (123 ve 123456), oluşan şifrenin karakter sayısı (32 karakter) hiç değişmiyor ve sabit kalıyor. Bu da bize sonlu sayıda şifre oluşturulabileceğini gösteriyor.

Base64, bize sonsuz sayıda şifre verebiliyorsa; o halde her bir veri bir şifreyle eşleşmiş oluyor ve kolaylıkla decode edilebiliyor.

md5'te ise durum böyle değil. Bunu şöyle açıklayayım. Şimdi biz sonsuz sayıda veri üretebilir miyiz? Tabiki de üretiriz. Peki md5 sonsuz sayıda şifre üretebilir mi? Hayır! İşte bu yüzden md5 ile şifrelenen veri decode edilemez. Çünkü elimizde sonlu sayıda şifre olduğu için sonsuz sayıdaki veriyi birebir eşleştiremeyiz. (Altını çizdiğim yerlere dikkat edin.)

md5 Hiç mi Kırılamaz

Ben bu makalemde md5 ile şifrelenen verinin kırılamayacağını iddia etmiyorum, tabiki de kırılabilir. Ben sadece decode edilemeyeceğini söylüyorum. Peki md5 nasıl kırılır derseniz, bunu yapmak çok zor. Çünkü; her bir veriyi md5 ile şifreleyip kırılması istenen şifreyle eşleşip eşleşmediğine bakılması gerekiyor. Şifrelenmiş veri ise 123456 gibi basit bir şifre değil ise kırılması çok zaman alıyor.

Yorumlar

Balamir
202cb962ac59075b964b07152d234b70 : karşılığı 123

e10adc3949ba59abbe56e057f20f883e karşılığı : 123456

Admin gel ben sana çift criptolanmış şifreleme çözeyim 5dk.'da istediğin her vbulletin 4'lü şifrelemesini çözeyim istediğin her md5 şifresini salt ile çözerim sana md5 çözülemez diyenler onlar eskidendi
soulmy
Ben çözülemez demedim ki, decode edilemez dedim. İkisi farklı şey.
Ahmet
Selam arkadaş
Bir sürü Md5 şifreleme elimde mevcut,ne programla nede online kirabildim,tuzlanmis olabilir ama çözemedim bir türlü.b benim için çok önemlidir.
Aynı şekilde base64 te var,yani aynı key,ama oda çözülmüyor. Hiç bir yerde bulamadim çözümü. Yazini okudum,insallah bir şeyler söylersin bana,yardimci olursan minnetkar olurum
soulmy
@Ahmet
Google'da "online base64 decoder" diye aratırsan, base64 kodlarını çözen siteleri bulabilirsin.