C# MD5 Şifreleme

C# MD5 Şifreleme

C# MD5 Şifreleme

  4 dakika Okuma Süresi
Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde C# ile MD5 şifrelemeyi anlatacağım. Hadi başlayalım !

Öncelikle MD5'in en olduğundan bahsedelim; MD5 aslında bir şifreleme algoritması değildir, asıl olarak dosya veya verilerin parmak izini bir diğer deyişle hash'ini oluşturmak ve dosyanın güvenilirliğini onaylamak amacıyla yapılmıştır yani örneğin siz 3 GB boyutunda bir dosya indireceksiniz diyelim, indireceğiniz web sitesinde MD5 kodunu görürsünüz ve dosyayı indirdikten sonra aynı dosyayı sizde MD5 ile şifrelerseniz ve web sitesindeki ile sizin elinizdekini karşılaştırırsınız. Eğer aynı ise dosya güvenli demektir, web sitesininkinden farklı bir şifre elde ederseniz indirdiğiniz dosyayı açmanızı tavsiye etmem.

MD5 şifreleme tek yönlüdür yani şifre oluşturulduktan sonra geriye dönüşü yoktur. Elinizdeki şifreyi tekrardan eski haline çeviremezsiniz. Bu yüzden günümüzde özellikle kullanıcı şifrelerini kaydetmek amacıyla kullanılmaktadır. Yani kullanıcının şifresi MD5 ile şifrelendikten sonra veritabanına kaydedilmekte, bu sayede veritabanı ele geçirilmiş olsa bile kullanıcı şifrelerine zarar gelmemektedir.

Bu kadar teknik bilgiden sonra hadi artık asıl işimize bakalım ve C# ile şifreleme yapalım.
Öncelikle Visual Studio aracılığıyla bir tane proje oluşturalım ve MD5 şifreleme için kullanacağımız System.Security.Cryptography ve gerekli sınıfları kullanabilmek yapabilmek için System.Text kütüphanelerini proje sayfamıza ekleyelim. Bunun için sayfanın en başına giderek

using System.Text;
using System.Security.Cryptography;
satırlarını yazalım.
Şidmi artık şifreleme fonksiyonunu yazabiliriz.
Öncelikle string parametre alıp, geriye string döndüren bi fonksiyon oluşturalım;
string Md5Sifrele(string sifrelenecek){ }
MD5 şifreleme için kullanılan MD5CryptoServiceProvider sınıfından yeni bir nesne türetmemiz gerek, çünkü asıl şifrelemeleyi yapacak fonksiyonlar bu sınıf içerisinde.
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
Yazımızın en başlarında da bahsettiğimiz üzere MD5'i hash işlemleri için kullanıyoruz ve bu demek oluyor ki hash üretmemiz gerek. Bunu da md5 nesnesi içerisinde bulunan ComputeHash() fonksiyonunu kullanacağız. Bu fonksiyon parametre olarak byte dizisi istiyor ve geriye byte dizisi döndürüyor, yani demek oluyor ki şifrelenecek veriyi önce byte dizisine çevirmemiz gerek. Onu da eklediğimiz System.Text kütüphanesi içerisinde bulunan UTF8 sınıfına ait GetBytes() fonksiyonunu kullanacağız.
Kodumuz şöyle olacak;
byte[] dizi = md5.ComputeHash(Encoding.UTF8.GetBytes(sifrelenecek));
Şimdi aslında elimizde şifrelenmiş veri var ama bu şifre byte dizisi halinde, e onu da string'e çevirelim. Onu da StringBuilder sınıfını kullanarak yapacağız ve bu sınıfın öncelikle yeni bir nesnesini türetmemiz gerekiyor.
StringBuilder sb = new StringBuilder();
Elimizde byte dizisi var dedik ve bu dizinin her bir elemanını sb nesnesi içerisine ekleyeceğiz, tabi önce string'e çevirmemiz gerek :)
İşin içinde dizi olduğuna göre döngü kullanacağız.

foreach(byte b in dizi)
    sb.Append(b.ToString("x2").ToLower());
Evet şu anda sb nesnesi içerisinde şifremiz bulunuyor, e bunu da artık geriye döndürelim ve işlemleri tamamlayalım.
return sb.ToString();
Evet bu dersimizde bu kadardı, yazdığımız kodları daha toplu olması için aşağıya bırakıyorum;

string Md5Sifrele(string sifrelenecek)
{
    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    byte[] dizi = md5.ComputeHash(Encoding.UTF8.GetBytes(sifrelenecek));
    StringBuilder sb = new StringBuilder();
    foreach (byte b in dizi)
        sb.Append(b.ToString("x2").ToLower());
    return sb.ToString();
}
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.


  • İçeriği Paylaş:

İÇERİĞİ DEĞERLENDİR

Toplam Değerlendirme Sayısı: 0
Toplam Değerlendirme: 0 / 5

Cevap Yaz