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