رمزگذاری و رمزگشایی رشته ها در #C
یکشنبه 7 تیر 1394Encrypt به معنای رمزگذاری و Decrypt به معنای رمز گشایی می باشد. گاهی اوقات برای اهداف محافظتی نیاز به رمزگذاری اطلاعاتمان داریم. در این مقاله با نحوه رمزگذاری و رمزگشایی رشته ها در ASP.NET آشنا خواهیم شد.
مایکروسافت خودش دارای متدهای ساده برای رمزگذاری و رمزگشایی می باشد.
متدهای ساده رمزگذاری و رمزگشایی
string encryptedString = SomeStaticClass.Encrypt(sourceString); string decryptedString = SomeStaticClass.Decrypt(encryptedString);
برای استفاده از نمونه کد شما می توانید CryptorEngine را به پروژه تان اضافه کنید و برای دسترسی به متدهای رمزگذاری و رمزگشایی از کلاس زیر استفاده نمایید.
کلاس رمزگذاری و رمزگشایی
public string DecryptString(string encrString) { byte[] b; string decrypted; try { b = Convert.FromBase64String(encrString); decrypted = System.Text.ASCIIEncoding.ASCII.GetString(b); } catch (FormatException fe) { decrypted = ""; } return decrypted; } public string EnryptString(string strEncrypted) { byte[] b = System.Text.ASCIIEncoding.ASCII.GetBytes(strEncrypted); string encrypted = Convert.ToBase64String(b); return encrypted; }
رمزگذاری و رمزگشایی با انتخاب کاراکتر
public string encrypt(string encryptString) { string EncryptionKey = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; byte[] clearBytes = Encoding.Unicode.GetBytes(encryptString); using(Aes encryptor = Aes.Create()) { Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); encryptor.Key = pdb.GetBytes(32); encryptor.IV = pdb.GetBytes(16); using(MemoryStream ms = new MemoryStream()) { using(CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(clearBytes, 0, clearBytes.Length); cs.Close(); } encryptString = Convert.ToBase64String(ms.ToArray()); } } return encryptString; } public string Decrypt(string cipherText) { string EncryptionKey = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; cipherText = cipherText.Replace(" ", "+"); byte[] cipherBytes = Convert.FromBase64String(cipherText); using(Aes encryptor = Aes.Create()) { Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); encryptor.Key = pdb.GetBytes(32); encryptor.IV = pdb.GetBytes(16); using(MemoryStream ms = new MemoryStream()) { using(CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write)) { cs.Write(cipherBytes, 0, cipherBytes.Length); cs.Close(); } cipherText = Encoding.Unicode.GetString(ms.ToArray()); } } return cipherText; }
برای انجام یک نمونه کافی است فرمی با 4 textbox و 2 Button مانند شکل زیر درست کرده و کدهای فوق را در آن کپی کرده و استفاده نمایید.
سپس کدهای فوق را در زیر قسمت Form1_Load در صفحه form1.cs کپی نمایید.
خروجی همانند شکل خواهد شد.
هنگامی که در تکست باکس اول رشته ای وارد کنیم و روی دکمه رمزگذاری کلیک نماییم در تکست باکس دوم رشته رمزگذاری شده نمایان خواهد شد.
حال اگر این رشته را در تکست باکس سوم کپی کنید و روی دکمه رمزگشایی کلیک نماییم خواهیم دید که این رشته همان رشته اول خواهد بود.
از این کلاس ها می توانید در پروژه های خود استفاده نمایید.
- C#.net
- 4k بازدید
- 7 تشکر