ASP.NET----编解码的静态类实现数据的加密
using System.Security.Cryptography; using System.IO; using System; using System.Text; namespace Core.Common.Tool { /// <summary> /// 用于编解码的静态类 /// </summary> public static class Code { #region 变量定义 /// <summary> /// 对称算法基类 /// </summary> private static SymmetricAlgorithm mobjCryptoService; /// <summary> /// 编码字符串 /// </summary> private static string Key; #endregion #region 构造函数 /// <summary> /// 对称加密类的构造函数 /// </summary> static Code() { mobjCryptoService = new RijndaelManaged(); Key = "Guz(%&hj7x89H$yuCORE56FtmaT8&fvHCFCy76*h%(HilJ$lhj!y6&(*jkP87jH7"; } #endregion #region 方法 #region 对称加密 /// <summary> /// 获得密钥 /// </summary> /// <returns>密钥</returns> private static byte[] GetLegalKey() { string sTemp = Key; mobjCryptoService.GenerateKey(); byte[] bytTemp = mobjCryptoService.Key; int KeyLength = bytTemp.Length; if (sTemp.Length > KeyLength) sTemp = sTemp.Substring(0, KeyLength); else if (sTemp.Length < KeyLength) sTemp = sTemp.PadRight(KeyLength, ' '); return ASCIIEncoding.ASCII.GetBytes(sTemp); } /// <summary> /// 获得初始向量IV /// </summary> /// <returns>初试向量IV</returns> private static byte[] GetLegalIV() { string sTemp = "E4ghj*Ghg7!rNIfb&95CORE6GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk"; mobjCryptoService.GenerateIV(); byte[] bytTemp = mobjCryptoService.IV; int IVLength = bytTemp.Length; if (sTemp.Length > IVLength) sTemp = sTemp.Substring(0, IVLength); else if (sTemp.Length < IVLength) sTemp = sTemp.PadRight(IVLength, ' '); return ASCIIEncoding.ASCII.GetBytes(sTemp); } /// <summary> /// 加密方法 /// </summary> /// <param name="Source">待加密的串</param> /// <returns>经过加密的串</returns> public static string EncryptCode(string Source) { byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source); MemoryStream ms = new MemoryStream(); mobjCryptoService.Key = GetLegalKey(); mobjCryptoService.IV = GetLegalIV(); ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor(); CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write); cs.Write(bytIn, 0, bytIn.Length); cs.FlushFinalBlock(); ms.Close(); byte[] bytOut = ms.ToArray(); return Convert.ToBase64String(bytOut); } /// <summary> /// 解密方法 /// </summary> /// <param name="Source">待解密的串</param> /// <returns>经过解密的串</returns> public static string DecryptCode(string Source) { byte[] bytIn = Convert.FromBase64String(Source); MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length); mobjCryptoService.Key = GetLegalKey(); mobjCryptoService.IV = GetLegalIV(); ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor(); CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read); StreamReader sr = new StreamReader(cs); return sr.ReadToEnd(); } #endregion #region 简单字符串加密 /// <summary> /// 倒序加1加密 /// </summary> /// <param name="rs">明文</param> /// <returns>密文</returns> public static string EncryptStringSimple(string rs) { byte[] by = new byte[rs.Length]; for (int i = 0; i < rs.Length; i++) { by[i] = (byte)((byte)rs[i] + 1); } rs = ""; for (int i = by.Length - 1; i >= 0; i--) { rs += ((char)by[i]).ToString(); } return rs; } /// <summary> /// 顺序减1解码 /// </summary> /// <param name="rs">密文</param> /// <returns>明文</returns> public static string DecryptStringSimple(string rs) { byte[] by = new byte[rs.Length]; for (int i = 0; i <= rs.Length - 1; i++) { by[i] = (byte)((byte)rs[i] - 1); } rs = ""; for (int i = by.Length - 1; i >= 0; i--) { rs += ((char)by[i]).ToString(); } return rs; } #endregion #endregion } }
广积粮,筑高墙,缓称王