در این قسمت با رمز کردن نوشته ها با یک کلید می پردازیم بدین صورت که نوشته رمز شده فقط به همان کلید که تعریف شده است باز می شود و قابل نمایش خواهد بود.
برای این منظور ما نیاز به یک کلید داریم برای اینکه داده های خود را بر اساس آن رمزنگاری کنیم و یک رشته که میخواهیم آن را به صورت رمز در بیاوریم این بدان معناست که ما میتوانیم یک تابع داشته باشیم که دو ورودی داشته باشد و یا یک کلاس برای استفاده راحت تر تعریف کنیم که دو ورودی دریافت کند و عملیات را بر اساس آن انجام دهد و بعد از اینکه داده ها ره صورت رمز در آمد نیاز به این هم می باشد که داده ها را از حالت رمز نگاری خارج کنیم که قابل درک باشد و برای اینکار نیاز به یک تابع دیگر داریم.ما برای راحتی دسترسی برای رمز نگاری و بازگشایی رمزنگاری از یک کلاس استفاده کرده ایم که به شرح زیر است :
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Cryptography;
using System.Windows.Forms;
//*******************
class Encrypt_CLS
{
Rijndael RJ = Rijndael.Create();
MD5CryptoServiceProvider MD = new MD5CryptoServiceProvider();
private byte[] MD5Hash(string Value)
{
return MD.ComputeHash(ASCIIEncoding.ASCII.GetBytes(Value));
}
public string Encrypt_Text(string Text_TO_Encrypt, string Key)
{
RJ.Key = MD5Hash(Key);
RJ.Mode = CipherMode.ECB;
byte[] To_Encrypt = Encoding.ASCII.GetBytes(Text_TO_Encrypt);
return Convert.ToBase64String(RJ.CreateEncryptor().TransformFinalBlock(To_Encrypt, 0, To_Encrypt.Length));
}
public string Decrypt_Text(string Encrypted_Text, string Key)
{
try
{
RJ.Key = MD5Hash(Key);
RJ.Mode = CipherMode.ECB;
byte[] To_Decrypt = Convert.FromBase64String(Encrypted_Text);
return ASCIIEncoding.ASCII.GetString(RJ.CreateDecryptor().TransformFinalBlock(To_Decrypt, 0, To_Decrypt.Length));
}
catch (Exception)
{
MessageBox.Show("Invalid Key", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
}
}
حال میتوانیم از کلاس فوق برای رمز نگاری با یک کلمه کلیدی استفاده کنیم که باید باهمان کلمه کلیدی هم میتوان متن رمز شده را باز کرد و مطالعه نمود.