- 7 Şub 2012
- 5,018
- 23
Merhabalar, sürekli açılan konular sorulan sorular arasında "md5 nasıl kırılır" sorusu yer alıyor.
En baştan söyliyim, md5 kırılamaz. Bakın üstüne basa basa söylüyorum , md5 KI RI LA MAZ.
"E ama nette kıran siteler var" diyecek olursanız, o siteler md5 kırmıyor , o siteler sizin verdiğiniz md5 leri daha önce database inde şifrelenmiş değerler ile karşılaştırıyor.
Örneğin şöyle bir db olsun
id - data - hash
-- ------ ------
1 x md5 değeri
Sizin girdiğiniz md5 değeri tablodaki hash ler ile karşılaşıtırılıyor, eğer uyuşan değer olursa o hash in data sını size gösteriyor.
Peki md5 neden kırılamaz ?
Öncelikle şunu bilmenizde fayda var, md5 bir özetleme algoritmasıdır. Yani girdiğiniz veriyi belirli bir boyutta özet bir veriye çevirir.
Hash algoritmalarına basit bir örnek vericek olursak :
sözde bir fonksiyon yazalım
--------------------------------
function hash(int veri){
return ((veri%113)*56)-1
}
Bu fonksiyon aldığı int değer karşısında farklı bir değer döndürüyor.
Misal hash(10) dediğimizde bize (10%113(10 mod 113) *56 )-1 = 559 değerini döndürür.
Fakat diğer hash fonksiyonları bu kadar basit olmaz, çakışma çözümlemeleri vs vs gerekir. Çakışma şudur farklı değer girdiğin halde aynı sonucu çıkartması. Yaptığımız örnek için deneyecek olursak :
hash(5) = 279
hash(118) = 279
Misal burada çakışma yaşandı.
Tabi md5 algoritması için tahmin edeceğiniz gibi çakışma çözümleri var ve algoritma farklı aşamalardan geçiyor.
Neden kırılamayacağı için ise , hash(5) dediğimizde 279 sonucunu aldık, fakat 279 un geri dönüşü 118 de olabilir.
Algoritma kendi içinde yaptığı işlemlerle veriyi elden geçirerek farklı bir hale dönüştürüyor, böylelikle geri döndürülemez oluyor.
Daha detaylı aramak isteyen arkadaşlar için "Collision resistance" araştırmalarını tavsiye ederim. Ayrıca "Collision solutions".
Umarım aydınlatıcı olmuştur.
En baştan söyliyim, md5 kırılamaz. Bakın üstüne basa basa söylüyorum , md5 KI RI LA MAZ.
"E ama nette kıran siteler var" diyecek olursanız, o siteler md5 kırmıyor , o siteler sizin verdiğiniz md5 leri daha önce database inde şifrelenmiş değerler ile karşılaştırıyor.
Örneğin şöyle bir db olsun
id - data - hash
-- ------ ------
1 x md5 değeri
Sizin girdiğiniz md5 değeri tablodaki hash ler ile karşılaşıtırılıyor, eğer uyuşan değer olursa o hash in data sını size gösteriyor.
Peki md5 neden kırılamaz ?
Öncelikle şunu bilmenizde fayda var, md5 bir özetleme algoritmasıdır. Yani girdiğiniz veriyi belirli bir boyutta özet bir veriye çevirir.
Hash algoritmalarına basit bir örnek vericek olursak :
sözde bir fonksiyon yazalım
--------------------------------
function hash(int veri){
return ((veri%113)*56)-1
}
Bu fonksiyon aldığı int değer karşısında farklı bir değer döndürüyor.
Misal hash(10) dediğimizde bize (10%113(10 mod 113) *56 )-1 = 559 değerini döndürür.
Fakat diğer hash fonksiyonları bu kadar basit olmaz, çakışma çözümlemeleri vs vs gerekir. Çakışma şudur farklı değer girdiğin halde aynı sonucu çıkartması. Yaptığımız örnek için deneyecek olursak :
hash(5) = 279
hash(118) = 279
Misal burada çakışma yaşandı.
Tabi md5 algoritması için tahmin edeceğiniz gibi çakışma çözümleri var ve algoritma farklı aşamalardan geçiyor.
Neden kırılamayacağı için ise , hash(5) dediğimizde 279 sonucunu aldık, fakat 279 un geri dönüşü 118 de olabilir.
Algoritma kendi içinde yaptığı işlemlerle veriyi elden geçirerek farklı bir hale dönüştürüyor, böylelikle geri döndürülemez oluyor.
Daha detaylı aramak isteyen arkadaşlar için "Collision resistance" araştırmalarını tavsiye ederim. Ayrıca "Collision solutions".
Umarım aydınlatıcı olmuştur.