Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


MD5 ve SHA1 Şifreleme Algoritmaları

Yazar: ismail aktaş

Kategori: .NET Framework

Eklenme Tarihi: 08.06.2007 07:16:11

Merhabalar. MD5 ve SHA1 günümüz web ve windows uygulamalarında sıklıkla kullandığımız hash adı verilen şifreleme algoritmalarıdır. Bu makalemizde bu teknikleri kullanmanın aslında ne kadar kolay olduğunu göreceğiz.
MD5 ve SHA1 Şifreleme Algoritmaları

Merhabalar.
MD5 ve SHA1 günümüz web ve windows uygulamalarında sıklıkla kullandığımız hash adı verilen şifreleme algoritmalarıdır. Bu makalemizde bu teknikleri kullanmanın aslında ne kadar kolay olduğunu göreceğiz.

Öncelikle şunu belirtmeliyim, MD5 ve SHA1 sadece tek yönlü şifreleme yapabilen ve herzaman aynı sonucu veren fonksiyonlardır. Yani şifreleme sonrasında oluşturulan string ifade, eski haline çevrilemez. Uygulama geliştirici, oluşturulan string ifadeleri karşılaştırarak doğruluğu kontrol eder. Günümüz web uygulamalarında özellikle üyelik kayıt, üyelik girişi gibi işlemlerde kullanılırlar.

Verinin şifrelenmesi ve daha sonraki kontrolü şu şekilde bir yaşam döngüsüne sahiptir.
1. Ziyaretçi, bilgilerini üye kayıt formuna girer.
2. Bilgilerden örneğin şifre alanı MD5 veya SHA1 şifreleme algoritmaları vasıtasıyla şifrelenerek veritabanına yazılır.
3. Daha sonraki zamanlarda ziyaretçi üye girişi için şifresini girip, siteye giriş yapmak istediğinde formdan gelen şifre alanı tekrar aynı şekilde şifrelenir.
4. Şifrelenme sonucunda ortaya çıkan string ifade ile veritabanındaki şifre alanındaki şifrelenmiş string ifade karşılaştırılır.
5. Sonuç aynı ise giriş doğrulanır, eğer farklı ise şifreler birbirini tutmuyor demektir. Bu da şifrenin ziyaretçi tarafından yanlış girildiğini anlamına gelmektedir.

Şimdi ASP.NET ortamında MD5 ve SHA1 algoritmalarının nasıl kullanıldığını gösteren bir örnek yapalım.

Yeni bir web site projesi açalım ve aşağıdaki resimdeki gibi bir tablo ve kontrolleri ekleyelim.




Şimdi de kodlarımızı yazalım. Default.aspx sayfamız tamamiyle şu kodlardan oluşacaktır.


Imports System.Security.Cryptography

Partial Class _Default

Inherits System.Web.UI.Page

Protected Sub btnsifrele_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsifrele.Click

Dim sifrelenecekmetin As String = Me.txtmetin.Text

If sifrelenecekmetin.Length > 0 Then

lblsonuc.Text = Sifrele(sifrelenecekmetin)

Else

lblsonuc.Text = "Şifrelenecek Metin Yok"

End If

End Sub

Private Function Sifrele(ByVal SourceText As String) As String

Dim UnicodeEncode As New UnicodeEncoding()

Dim ByteSourceText() As Byte = UnicodeEncode.GetBytes(SourceText)

Select Case Me.Radiosecim.SelectedValue

Case "MD5"

Dim Sifre As New MD5CryptoServiceProvider()

Dim ByteHash() As Byte = Sifre.ComputeHash(ByteSourceText)

Return Convert.ToBase64String(ByteHash)

Case "SHA1"

Dim Sifre As New SHA1CryptoServiceProvider

Dim ByteHash() As Byte = Sifre.ComputeHash(ByteSourceText)

Return Convert.ToBase64String(ByteHash)

End Select

End Function

End Class


Kodlarıda eklediğimize göre sayfamızı debug edebiliriz. Karşımıza şöyle bir ekran çıkmalı.



Şifrelenecek metni girer ve şifrele butonuna basarsak texbox içine girilen değer şifrelenerek lblsonuc isimli label kontrolümüze yazılacaktır.



MD5 Hash algoritması, 128 bit şifrelenmiş string ifade oluşturur. Burdan şunu anlayabiliriz. Şifrelemeye maruz kalan string ifade bir kelime de olsa, bin kelimede olsa hep 128 bit’lik bir string değer ortaya çıkar.

Kimi güvenlik uzmanları SHA1 hash algoritmasının MD5’ e oranla daha sağlam olduğunu savunmaktadır. Sebep olarak ise, MD5’in iki farklı veride aynı sonucu üretmesi gerekçe olarak gösterilmektedir. (Sanırım çok düşük bir ihtimaldir)

Umarım faydalı olmuştur.

  • Makalenin kaynak kodlarına ulaşmak için buraya tıklayınız.

    İsmail AKTAŞ
  • Yazar Hakkında 1 Yorum Yorum Yaz Yazara ait diğer Makaleler
    Tema
    Anket
    ASP.NET MVC'yi Projeleriniz de kullandınız mı?


    En Çok Okunan Makaleler
    En Son Eklenen Makaleler
    Soru Merkezinde Bekleyenler
    Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
    Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.