İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# MD5 Şifreleme – Tek Yönlü Şifreleme

C# MD5 Şifreleme – Tek Yönlü Şifreleme
+ - 0

Merhaba, C# MD5 Şifreleme – Tek Yönlü Şifreleme yazım ile C# derslerimize devam ediyoruz. Bir süredir C# ders yazamıyordum çünkü yaklaşık 5 aydır C# projeleri yazmıyorum. Büyük oranda PHP ile projeler üretmeye başladım. Durum böyle olunca da C# yazıları azalmış oldu. Bu sebeple bende projelerimde kullanmamış olsam da şifreleme yöntemleri ile ilgili dersler eklemek istedim.

 

C# MD5 Şifreleme – Tek Yönlü Şifreleme

Öncelikle bilmelisiniz ki MD5 tek yönlü bir şifrelemedir. Bir kere şifrelenen veri, şifresinden geri döndürülemez.

C# MD5 Nedir?

MD5 temelde şifreleme amacı gütmemektedir. Gönderilen ve alınan verinin aynı olup olmadığını kontrol etmek amacı ile üretilmiştir. Bir veri transferine başlamadan önce verinin bir 128 bit uzunluğunda md5 hash’i üretilir ve veri ile gönderilir. Veri transferi bittiğinde, alıcı da verileri tekrar md5 hash üretir ve gelen hash ile yeni hash eşleştirilir. Eğer şifreler aynı değilse dosya transfer sırasında bozulma yaşamıştır.

C# MD5 Şifreleme - Tek Yönlü Şifreleme

Yazılım sistemlerinde bu yöntemi kullanıcının şifresinin olduğu gibi saklanmasını istemediğimiz için kullanırız. Kullanıcı şifresinin girer ve girilen şifre md5 ile şifrelenerek veri tabanına kayıt edilir. Yani veri tabanında 128 bitlik bir ifade bulunur. Kullanıcı her giriş yapmak istediğinde şifresi tekrar şifrelenir ve daha önce şifrelenmiş şifresi ile karşılaştırılır. Böyle biz gerçek şifreyi asla bilmeyiz.

Ancak bilmeliyiz ki bu yöntem %100 güvenilir değildir. Çünkü hackerlerin elince milyonlarca satırlık eşleştirmeli şifre listeleri yer alır. Şöyle düşünün bir liste var elinizde ve bir kolonda okunabilir bir şifre var diğer kolonda ise o okunabilir şifrenin md5 hash’i var. Böylece hash ile hash karşılaştırması yaparak o hash’in ne olduğunu bruteforce yöntemi ile bulabilirler.

Bunu durumu engellemek için de salt yani tuz kullanırız. Ama o başka yazının konusu :D  O yazı da burada :D

  • HASH Şifreleme Yöntemleri
  • MD5 128 Bitlik Hash Çıktısı verir.
  • SHA1 160 Bitlik Hash Çıktısı verir.
  • SHA256 – 256 Bitlik Hash Çıktısı verir.
  • SHA384 – 384 Bitlik Hash Çıktısı verir.
  • SHA512 – 512 Bitlik Hash Çıktısı verir.

C# MD5 Şifreleme

Şimdi gelin C# kullanarak bu şifrelemeyi nasıl yapabileceğimizi görelim.

Öncelikle formumuza şu using’i ekliyoruz.

 

using System.Security.Cryptography;

sonrasında şifreleme metodumuzu hazırlayalım.

 

        public static string MD5Hash(string text)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] dizi = Encoding.UTF8.GetBytes(text);
            dizi = md5.ComputeHash(dizi);
            StringBuilder sb = new StringBuilder();
            foreach (byte ba in dizi)
            {
                sb.Append(ba.ToString("x2").ToLower());
            }
            return sb.ToString();
        }

Şifrelemeyi yapacak metodumuz hazır. Şimdi de nasıl kullandığımıza bakalım.

 

       private void Form1_Load(object sender, EventArgs e)
        {            
            // DB'den okunan şifre olduğunu varsayalım
            string sifre1 = MD5Hash("mustafabükülmez");
           
            // şifre alanına girilen şifre olduğunu varsayaşım
            string sifre2 = MD5Hash("mustafabükülmez");


            if (sifre1 == sifre2)
            {
                MessageBox.Show("Şifre doğru");
            }
        }

Kullanımımız da bu şekildeydi.

Hepsi bu kadar.


Bu yazımızda bu kadardı. Diğer derslerde görüşmek üzere…

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Ders No: 42’dir

Discord’a katılmayı unutmayın.

Sağlıcakla ve kodla kalın….

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)