Bu makalemizde C# programlama dili ile kodlanmış bir uygulamayı sizlere tanıtacağız. Uygulamanın amacı kullanıcının girmiş olduğu bir adet metini veya herhangi bir değeri şifreleyebilmesi ve şifrelediği metni geri çözebilmesi söz konusudur. Bu uygulamada bazı İngilizce kelimelere yer verilmiştir. İlk olarak sizlere uygulamada yer verilen İngilizce kelimelerin anlamlarını sizlerle paylaşacağız. Kelimeler ve anlamaları aşağıdaki gibidir;

1- Encrypt = Şifrelemek

2- Decrypt = Şifreyi Çözmek

Bu uygulamamızda kullanacağımız kod satırları ve form ekranı tasarım görüntüsü aşağıdaki gibidir.

 

Uygulamamızın form ekranı tasarım görüntüsü yukarıdaki gibidir…

İlk olarak uygulamamıza aşağıdaki kütüphaneleri ekliyoruz…

[csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; [/csharp]

Uygulamamızın form ekranında bulunan Encrypt butonunun Click Eventine aşağıdaki kodları yazıyoruz…

[csharp] byte[] data = UTF8Encoding.UTF8.GetBytes(txtDeger.Text);
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
byte[] keys = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider() { Key = keys, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 })
{
ICryptoTransform transform = tripDes.CreateEncryptor();
byte[] results = transform.TransformFinalBlock(data, 0, data.Length);
txtSifrelenmisDeger.Text = Convert.ToBase64String(results, 0, results.Length);
}
} [/csharp]

Uygulamamızın form ekranında bulunan Decrypt butonunun Click Eventine aşağıdaki kodları yazıyoruz…

[csharp]  byte[] data = Convert.FromBase64String(txtSifrelenmisDeger.Text);
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
byte[] keys = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider() { Key = keys, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 })
{
ICryptoTransform transform = tripDes.CreateDecryptor();
byte[] results = transform.TransformFinalBlock(data, 0, data.Length);
txtSifresiCözulmusDeger.Text = UTF8Encoding.UTF8.GetString(results);
}
} [/csharp]

Uygulamamızda daha yukarıdaki gibi kodlarımızı yazdıktan sonra bir adet global değişken tanımlamamız gerekmektedir. Tanımlayacağımız global değişken aşağıdaki gibidir…

[csharp] string hash = “h@s@nAdiguzel”; [/csharp]

Yazmamız gereken kodlar bu kadardır. Genel olarak yazmış olduğumuz  kodlarımızın genelde nasıl göründüğünü ele almak istersek aşağıdaki kodlarla karşılaştırabiliriz.

[csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace EncryptDecrypt
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

string hash = “h@s@nAdiguzel”;

//btnEncrypte butonunun Click eventinin koldarı aşağıdaki gibidir….
private void btnEncrypt_Click(object sender, EventArgs e)
{
byte[] data = UTF8Encoding.UTF8.GetBytes(txtDeger.Text);
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
byte[] keys = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider() { Key = keys, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 })
{
ICryptoTransform transform = tripDes.CreateEncryptor();
byte[] results = transform.TransformFinalBlock(data, 0, data.Length);
txtSifrelenmisDeger.Text = Convert.ToBase64String(results, 0, results.Length);
}
}
}

//btnDecrypt butonunun Click eventinin koldarı aşağıdaki gibidir….
private void btnDecrypt_Click(object sender, EventArgs e)
{
byte[] data = Convert.FromBase64String(txtSifrelenmisDeger.Text);
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
byte[] keys = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(hash));
using (TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider() { Key = keys, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 })
{
ICryptoTransform transform = tripDes.CreateDecryptor();
byte[] results = transform.TransformFinalBlock(data, 0, data.Length);
txtSifresiCözulmusDeger.Text = UTF8Encoding.UTF8.GetString(results);
}
}
}
}
} [/csharp]

Uygulamamızı çalıştırdığımız zaman aşağıdaki ekran görüntülerini elde etmiş olacağız.

Girilmiş Değerin Şifrelenmiş Hali.

 

Şifrelenmiş Değerin Şifresinin Çözülmüş Hali.

 

Bu uygulamamızda MD5 şifrelme algoritmasını kullanmış bulunmaktayız ve sizlere sunmaktayız.


Hasan Adıgüzel – (İletişim : mesmed@programmer.net)

Projeyi Burdan İndirebilirsiniz.