MD5 Nedir?Ne işe yarar?(Detaylı anlatım)

kesh_34

New member
Katılım
12 Haz 2008
Mesajlar
124
Reaction score
0
Puanları
0
MD5 RFC'de de belirtildiği gibi şifreleme algoritmalarına yardımcı olmak amacıyla kullanılabilecek bir HASHING / FINGERPRINTING algoritmasıdır ve yalnızca 128-bit'lik (16-bayt) bir çıktı üretir. Bu nerede kullanılır? Öncelikle bir verinin (dosyanın) doğru transfer edilip edilmediği veya değiştirilip değiştirilmediğinin kontrol edilmesinde. Örneğin CD ISO dosyalarının çoğuz aman MD5 hash'leri de yanında verilir ve 700MB'lık bir transferin ardından bu değerin kendi hesapladığımızla aynı olmasını umarız Bir diğer kullanımı da public-key şifrelemededir. Public-key şifreleme (asimetrik), simetrik şifrelemeye göre çok çok (ve çok) daha fazla hesap gücü ve zaman gerektirdiğinden Public-key sistemlerde bile aslında Simetrik standart şifreleme kullanılır (Asimetrik public key ile). Daha sonra veri MD5 gibi bir hash'ten geçirilir ve bu kısa hash değeri asıl olarak asimetrik şifreleme ile şifrelenir. Bu sayede performans ile güvenlik arasında bir denge sağlanmış olur

Bunlara ek olarak md5 i daha detaylı anlatırsak.

Bir database management tekniğidir. Yani eldeki key kullanılarak şak die bulunur veri'nin konumu. hash fonksiyonu veri'nin bazı matematiksel özellikler kullanılarak - mesela harflerinin ordinal değeri ve kelimedeki yerleri - bir key üretir bu key sayesinde konum belli olur. bu fonksiyon belirli miktarlarda veri için hash table'da verileri ne kadar homojen dağıtabiliyosa o kadar iyidir. diğer önemli nokta collisionlardır. çakışma olduğunda yani aynı key'e sahip iki veri olduunda lineer probing, quadratic probing ya da double hashing olaylarından bir tanesi kullanılarak çakışan verinin yeni lokasyonu bulunur. lineer probing de veri hash tableda hemen bir sonraki lokasyona yerleştirilir, double probingde de lokasyonun nümerik karesi alınarak koyulucak yeni lokasyon bulunur, double hashingde de iki hash functionı içiçe kullanılarak keylerin daha da unique olması sağlanır. eğer belli bölgelerde birikme olmuşsa bunlara da cluster denir, en birinci amaç bunu önlemektir zaten probing olayında. ayrıca hash table'ın büyüklüğünün asal sayı olması tercih edilmelidir, özellikle quadratic probingde, bu sayede homojen bir probing sağlanır.

MD5'in kırılması olayına gelince. Söz konusu olan bir HASH algoritması olduğuna göre 'kırmak' demek aynı HASH değerini üreten 'aynı' ya da 'başka' bir veri dizisi bulmak demektir. Aynı 128-bitlik hash değerini üreten binlerce (gerçekte sonsuz!) veri vardır. Örnekteki 17645312 parolası 98b011d88c9ae33766814dcc76ad7b5c HASH değerine eşitlenmekte. Ancak örneğin (atıyorum) 9831332123 parolası da aynı HASH değerini verebilir, ve daha binlercesi.... MD5 aynı HASH değerini veren iki ya da daha fazla girdinin makul süreler içinde bulunamayacağı noktasından hareket ediyordu. Fakat günümüzde özellikle girdi verisi kısa ise (örneğin parolalar gibi) bu süre son derece kısaldığından MD5'in de güvenilirliği azalmıştır.

9 haneli sadece rakamdan oluşan bir şifrenin kırılması ortalama 5 dakika almaktadır p4 2.4 gibi bir sistemde o yüzden şifreniz uzun ve harf kombinasyonu içersin.
5465siU4 gibi

md5 tek yönlü bir algoritmadır yani sizin şifreniz.
abc olsun bunun md5 li hali 32 karekterli bi yapı oluşturur 900150983CD24FB0D6963F7D28E17F72
eğer şifreniz ABc olsaydı bu yapı 4C36FA32C9D93A002C3E14CE038AA709 olurdu
md5 in geri dönüşümü yoktur şifrenizi forumda unuttuysanız yönetici bu şifreyi hiç bir şekilde geri dönüştüremez link i kullanarak yeni şifre üretebilirsiniz

MIT’de prof. olan Ron RIVEST tarafından MD4’ün geliştirilmiş bir versiyonu olarak sunulan md5(Message Digest),
basit anlamda bir hash fonksiyonudur. 1993 yılında Bert DEN BOER ve Antoon BOSSELAERS md5’in iki farklı değeri
için aynı değeri üreten örnekler bulmuşlardır. Bu yüzden md5’e olan güven oldukça sarsılmıştır. 2004 yılında
md5CRK adında dağınık bir proje ile md5’in zaafı ve zayıf yönleri belgelenmiştir.

Md5 genelde ücretsiz olarak dağıtılan yazılımlarda bilgilerinin doğruluğunu test etmek için kullanılır. Md5’in bu şekilde kullanıldığı durumlarda md5Sum olarakda adlandırılmaktadır. Örneğin, İnternet üzerinden indirdiğiniz
bir dosyanın bozulmadan kullanıcıya ulaştığını tesbit edebilmek için kullanılır.

Microsoft .NET Framework’te md5, kendisi gibi soyut bir sınıf olan HashAlgoritm sınıfından türeyen md5 sınıfı ile tanımlanmıştır. md5CryptoServiceProvider md5 algoritmasını gerçekleyen sınıftır. Microsoft .NET Framework’te, md5 algoritması için hash boyutu 128 bittir.
Md5CryptoServiceProvider sınıfı md5 soyut sınıfından türemektedir. Md5 soyut sınıfının erişilebilir özellikleri şu şekilde tanımlanır;
* CanReuseTransform, şu an ki dönüşüm tekrar kullanılıp kullanılmayacağını belirtir,varsayılan değeri true’dur.
* CanTransformMultipleBlocks, aynı anda bir çok veri bloğunun dönüştürülüp dönüştürülemeyeceğini belirtir, varsayılan
değeri true’dur.
* Hash, hesaplanan hash değerini verir.
* HashSize, hesaplanan hash değerinin bit olarak büyüklüğünü gösterir. Varsayılan değeri 128 bittir.
* InputBlockSize, kullanılan veri bloğunun bit olarak büyüklüğünü gösterir. Varsayılan değeri 1 bittir.
* OutputBlockSize, algoritma sonunda oluşacak veri bloğunun bit olarak büyüklüğünü gösterir. Varsayılan değeri 1 bittir.

Bu sınıfın erişilebilir metotları ise şunlardır;
* Clear, md5 algoritması tarafından kullanılan kaynakları sisteme geri yükler.
* ComputeHash, kullanılan veri bloğu için hash değerini hesaplar.
* Create, md5 algoritmasını gerçekleştirecek bir nesne üretir.
* Equals, iki nesnenin birbirine eşit olup olmadığını kontrol eder.
* GetHashCode, bellekteki o nesneye özgü bir hash kodu üretir.
* GetType, bu nesnenin tipini verir.
* Initialize, md5 nesnesinin ilk değerlerini ayarlar.
* ToString, şu an ki nesneyi ifade eden bir metin oluşturur.
* TransformBlock, belirtilen veri bloğundaki belirtilen alan için hash değerini hesaplar ve belirtilen sonuç veri bloğunun belirtilen alanına hesaplanan bu hash değerini kopyalar.
* TransformFinalBlock, belirtilen byte dizisindeki belirtilen alan için hash değerini hesaplar.

Md5CryptoServiceProvider, md5 sınıfından türer ve md5 algoritmasını gerçeklemektedir. md5CryptoServiceProvider mühürlü bir sınıftır. Mühürlü sınıf, hiç bir sınıfın kendisinden türetilemeyeceğini ifade eder. Bu sınıfın erişebilir özellikleri şunlardır;
* CanReuseTransform, şu an ki dönüşüm tekrar kullanılıp kullanılmayacağını belirtir,varsayılan değeri true’dur.
* CanTransformMultipleBlocks, aynı anda bir çok veri bloğunun dönüştürülüp dönüştürülemeyeceğini belirtir, varsayılan değeri
true’dur.
* Hash, hesaplanan hash değerini verir.
* HashSize, hesaplanan hash değerinin bit olarak büyüklüğünü gösterir. Varsayılan değeri 128 bittir.
* InputBlockSize, kullanılan veri bloğunun bit olarak büyüklüğünü gösterir. Varsayılan değeri 1 bittir.
* OutputBlockSize, algoritma sonunda oluşacak veri bloğunun bit olarak büyüklüğünü gösterir. Varsayılan değeri 1 bittir.

Bu sınıfın erişilebilir metotları ise şunlardır:
* Clear, md5 algoritması tarafından kullanılan kaynakları sisteme geri verir.
* ComputeHash, kullanılan veri bloğu için hash değerini hesaplar.
* Create, md5 algoritmasını gerçekleştirecek bir nesne oluşturur.
* Equals, iki nesnenin birbirine eşit olup olmadığını test eder.
* GetHashCode, bellekteki o nesneye özgü bir hash kodu oluşturur.
* GetType, bu nesnenin tipini verir.
* Initialize, md5 nesnesinin ilk değerlerini ayarlar.
* ToString, şu an ki nesneyi ifade eden bir metin oluşturur.
* TransformBlock, belirtilen veri bloğundaki belirtilen alan için hash değerini hesaplar ve belirtilen sonuç veri bloğunun
belirtilen alanına hesaplanan bu hash değerini kopyalar.
* TransformFinalBlock, belirtilen byte dizisindeki belirtilen alan için hash değerini hesaplar.

Kaynak: Microsoft.Net
 
microsoft kaynaksa ilgilenmem okadar ama okudum güzel bi yazı olmuş hayrete düşürdü microsoft beni:D
 
Geri
Üst