有时候我们需要对数据进行加密解密,最常见的加密方法有MD5加密、Base64加密。而今天讲的是Base64加密解密方法,我们需要引用两个文件using System.Collections.Generic;和using System.Security.Cryptography;同时我们定义两个变量 KEY_64和IV_64来存放字符,这两个变量是加密和解密需要用到的,但这必须是8个字符且是64Bit。
例如如此定义变量:
private static string KEY_64 = "a4G28=Jk"; //必须是8个字符(64Bit) private static string IV_64 = "JKbN=5[?"; //必须8个字符(64Bit)解密的方法如下:
/// <summary> /// 加密 /// </summary> /// <param name="PlainText">未加密文本</param> /// <returns></returns> public static string Encrypt(string PlainText) { byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); int i = cryptoProvider.KeySize; MemoryStream ms = new MemoryStream(); CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(cst); sw.Write(PlainText); sw.Flush(); cst.FlushFinalBlock(); sw.Flush(); return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length); }解密的方法如下:
/// <summary> /// 解密 /// </summary> /// <param name="CypherText">加密过的字符</param> /// <returns></returns> public static string Decrypt(string CypherText) { byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); byte[] byEnc; try { byEnc = Convert.FromBase64String(CypherText); } catch { return null; } DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); MemoryStream ms = new MemoryStream(byEnc); CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read); StreamReader sr = new StreamReader(cst); return sr.ReadToEnd(); }同时,你可以自定义自己的加密程序,比如字符中含有数字你可以对其进行加减乘除求余等数学操作,针对字符的可以进行ASCII处理,再或者利用高数的思想进行算法运算,解密则根据你自己定义的规则进行反算回来。