C# ile MD5 Şifre Oluşturucu

MD5 Algoritması
Message Digest 5 (MD5) algoritması, verilen dosyanın veya mesajın (şifre vb.) kendine has “parmak izi” nin oluşturulmasını “hash” fonksiyonlarına dayalı olarak sağlayan bir algoritmadır. Bir veritabanı yönetimi (database management) tekniğidir. 1991 yılında MIT (Massachusetts Institute of Technology)’de görev yapan Profesör Ron Rivest tarafından geliştirilmiştir. Profesör Rivest MD5’i MD4’ün bir üst sürümü olarak tasarlamıştır.

Özellikleri

MD5 algoritması tek yönlü çalışır. Şifreleme yapılır, ancak şifre çözüm

işlemi yapılamaz.

MD5 algoritması, üzerinde işlem yapılan dosyada (aktarma vb.) herhangi bir değişiklik olup olmadığını tespit eder. Eğer bir değişiklik yapılmışsa, yeni dosyanın MD5 algoritmasından geçilmesinden çıkan sonuç ile ilk dosyanın MD5 sonucu birbirinden farklı olacaktır.

MD5 algoritması bir alt sürümü olan MD4’e göre yavaş çalışır, ancak şifrelendirme sistemi çok daha karışık ve çözülmesi güçtür.

Genel olarak 4 farklı aşamalı bir sisteme sahiptir. Her aşama birbirinden farklı işleyişe sahip olup 16’şar basamaktan oluşmuştur. Bir MD5 şifreleme işleminde aşağıdaki resimdeki sistemden 64 tane gerçekleşmektedir.

Boyutu fark etmeksizin algoritmaya girişi yapılan dosyanın çıkışı olarak 128-bit uzunluğunda 32 karakterli 16’lık sayı sisteminde bir dizi elde edilir.
Kullanıldığı Yerler

İnternet trafiğinde. “SSL (Secure Sockets Layer – Güvenli Yuva Katmanı)” gibi.
Özel bilgisayar ağlarında. “VPN (Virtual Private Network – Sanal Özel Ağ)” gibi.
Güvenli uzaktan ulaşım uygulamalarında. “SSH (Secure Shell – Güvenli Kabuk)” gibi.
Kimlik belirleme uygulamalarında.
Dezavantajları

Kullanıcı adı ve şifre ile giriş yapılan sitelerde, kullanıcı şifresini unuttuğu takdirde sistem eski şifreyi veremez. Şifre, MD5 algoritmasından geçirilmiş halde saklandığı için şifre çözülemez. Sistem kullanıcıya yeni şifre atar.
MD4 ‘e göre daha uzun bir şifre ürettiğinden çalışması daha uzun zaman alır.

Bu bilgilendirmeden sonra gelelim şifreleme uygulamasını yazmaya..

//Şifreleme için kullanacağımız kütüphaneyi belirtelim using System.Security.Cryptography;
namespace MD5 Şifrele {

public partial class frm md5sifrele : Form

{

//Genel kullanımda "MD5Sifrele" adında sabit bir metod oluşturalım ve metin adında değişken tanımlayıp içeri alalım.. public static string MD5Sifrele(string metin)

// Şifreleme Servis Sağlayıcısını Tanımlayalım.. MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); //Provider(Sağlayıcı)

//Veriyi byte dizisine dönüştürelim ve hash'leme işlemlerini

yapalım..

byte(] btr = Encoding.UTF8.GetBytes(metin); btr = md5.ComputeHash(btr);

//byte'ları toparlamak için yeni bir StringBuilder(metin tip oluşturucu) yapalım..

StringBuilder sb = nev/ StringBuilder();

//hash'e çevrilen her byte'ı dizi içinden okuyalım ve her birini hexadecimal(onaltılık sayı sistemi) string(metin tip) olarak format1ayalım.

foreach (byte ba in btr)

{

sb.Append (ba.ToString ("x2") .ToLov/er () ) ;

}

//hexadecimal(onaltılık sayı sistemi) string'i geri döndürelim.

return sb.ToString();

}

public frm_md5sifrele()

{

InitializeComponent();

}

//Şifreleme işlemi için kullanacağımız butona yapılacak işlemleri yazıyoruz..

private void buttonl_Click(object sender, EventArgs e)

{

//Bir değişken tanımlayıp oluşturduğumuz ve veri yolladığımız method'dan gelen değeri bu değişkene atıyoruz..

string str = MD5Sifrele(txt_orj.Text);

//Değişkendeki değerimizi bundan farklı istediğimiz şekilde çıktı olarak verebiliriz..

txt md5.Text = str;
}
}

Yorum yapın