1
0
رمز نگاری و رمز گشایی با استفاده از کلید خصوصی در سی شارپ
رمز نگاری و رمز گشایی با استفاده از کلید خصوصی در سی شارپ
در بعضی از شرایط پیش می آید که برای رمز نگاری و رمزگشای از یک کلید استفاده کنید تا هیچ کس نتواند اطلاعات شما را رمزگشای کند مگر اینکه کلیدی که شما در رمزنگاری استفاده کرده اید را داشته باشد
متد رمز نگاری
متد Encrypt دو ورودی دریافت می کند و همچنین این متد به صورت یک Extension متد تعریف شده یعنی ورودی اول را به صورت Extension دریافت میکند. یکی رشته ای که می خواهید آن را رمزنگاری کنید و دومی کلیدی که می خواهید با آن رمزنگاری صورت گیرد وارد می کنید.
متد Encrypt
/// <summary> /// Encrypt(strText, "&%#@?,:*"); /// </summary> /// <param name="str"></param> /// <param name="key"></param> /// <returns></returns> public static string Encrypt(this string str, string key) { byte[] byKey; byte[] IV = { 18, 52, 86, 120, 144, 171, 205, 239 }; try { byKey = System.Text.Encoding.UTF8.GetBytes(key.Substring(0, 8)); System.Security.Cryptography.DESCryptoServiceProvider des = new System.Security.Cryptography.DESCryptoServiceProvider(); byte[] inputByteArray = System.Text.Encoding.UTF8.GetBytes(str); System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(byKey, IV), System.Security.Cryptography.CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return Convert.ToBase64String(ms.ToArray()); } catch (Exception ex) { throw ex; } }
نحوه استفاده متد Encrypt
string str = "mytext"; string myEncrypt= str.Encrypt("myprivatekey");
متد رمزگشای
متد Decrypt نیز دو ورودی دریافت می کند و همچنین این متد به صورت یک Extension متد تعریف شده یعنی ورودی اول را به صورت Extension دریافت میکند. یکی رشته رمزنگاری شده و سپس کلیدی که با آن عمل رمزنگاری صورت گرفته را دریافت می کند.
کدهای متد Decrypt
/// <summary> /// Decrypt(strText, "&%#@?,:*"); /// </summary> /// <param name="str"></param> /// <param name="key"></param> /// <returns></returns> public static string Decrypt(this string str, string key) { byte[] byKey; byte[] IV = { 18, 52, 86, 120, 144, 171, 205, 239 }; byte[] inputByteArray; // inputByteArray.Length = strText.Length; try { byKey = System.Text.Encoding.UTF8.GetBytes(key.Substring(0, 8)); System.Security.Cryptography.DESCryptoServiceProvider des = new System.Security.Cryptography.DESCryptoServiceProvider(); inputByteArray = Convert.FromBase64String(str); System.IO.MemoryStream ms = new System.IO.MemoryStream(); System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateDecryptor(byKey, IV), System.Security.Cryptography.CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); System.Text.Encoding encoding = System.Text.Encoding.UTF8; return encoding.GetString(ms.ToArray()); } catch (Exception ex) { throw ex; } }
نحوه استفاده متد Decrypt
string str = "mytext"; string mytext=str.Decrypt("myprivatekey");
نظر / سوال