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
Hiç yorum yok:
Yorum Gönder