DES Algoritması İle Metin Şifreleme
Bu yazıda DES algoritması ile metinleri şifreleyeceğiz
DES algoritması en güçlüsü olmasa bile oldukça sık kullanılan bir şifreleme algoritmasıdır.
Verdiğimiz 8 karakterlik anahtara göre şifreyi oluşturmaktadır.
Öncelikle algoritmayı kullanacak test uygulamamızı yazalım:
<table> <tr> <td style="width: 200px;"> Şifrelenecek metin </td> <td> <asp:TextBox ID="txtMetin" runat="server" Width="250px" Text="www.daltinkurt.com u arkadaşlarımla paylaşmalıyım" /> </td> </tr> <tr> <td> Anahtar bilgi (8 karakter) </td> <td> <asp:TextBox ID="txtKey" runat="server" Width="100px" Text="123abc98" /> </td> </tr> <tr> <td> </td> <td> <asp:Button ID="btnSifrele" runat="server" Text="Şifrele" OnClick="btnSifrele_Click" /> <br /> <asp:CheckBox ID="cbUrl" runat="server" Text="Url Encode" /> </td> </tr> <tr id="trSonuc" runat="server" visible="false"> <td> Şifreli metin </td> <td> <asp:Label ID="lblSonuc" runat="server" /> </td> </tr> </table>
Algoritmayı kullanacak kodlarımız:
protected void btnSifrele_Click(object sender, EventArgs e) { string metin = txtMetin.Text; string key = txtKey.Text; lblSonuc.Text = new DES_Sifreleme().Sifrele(metin, key,cbUrl.Checked); trSonuc.Visible = true; }
Şimdi de şifreleme sınıfını paylaşayım:
public class DES_Sifreleme { public string Sifrele(string value, string desKey) { // DES algoritması ile şifreleme // desKey bilgisinin 8 karakterli olması gerekiyor UTF8Encoding utf8Enc = new UTF8Encoding(); DESCryptoServiceProvider des = new DESCryptoServiceProvider(); des.Key = utf8Enc.GetBytes(desKey); des.Mode = CipherMode.ECB; ICryptoTransform encryptor = des.CreateEncryptor(); byte[] arrayByte = utf8Enc.GetBytes(value); byte[] enc = encryptor.TransformFinalBlock(arrayByte, 0, arrayByte.Length); return Convert.ToBase64String(enc); } public string Sifrele(string value, string desKey, bool urlencode) { // şifrelenmiş bilgiyi URL den parametre olarak göndereceksek // Url Encode işleminden geçirmeliyiz if (urlencode) return System.Web.HttpUtility.UrlEncode(Sifrele(value, desKey)); else return Sifrele(value, desKey); } }
Burada Sifreleme metodunu, şifrelenmiş veriyi URL'den gönderebilmemiz için overload ettik.
URL'den göndermeyeceksek ilk metodu kullanabilirsiniz.
Lütfen dikkat: anahtar değerimiz 8 karakter olmalıdır.
#DES #şifreleme #DESCryptoServiceProvider