ASP.NET----编解码的静态类实现数据的加密
2011-08-04 09:40
357 查看
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 } }
相关文章推荐
- ASP.NET中重要数据加密方法及实现
- 在ASP.NET页面中实现数据棒图
- asp.net实现数据从DataTable导入到Excel文件并创建表的方法
- ASP.NET 2.0 中的数据操作:: 使用 GridView 和DetailView实现的主/从报表
- ASP和ASP.NET(DataGrid)实现数据列表之对比[源码]
- asp.net Xml绑定到数据控件的具体实现
- asp.net AJAX实现无刷新获得数据
- ASP.NET中实现页面间数据传递的方法
- asp.net下可实现超酷图表,超酷实时数据仪表显示
- 实现asp.net只对个别控件实时访问数据库刷新数据
- asp.net实现Postgresql快速写入/读取大量数据实例
- ASP.NET 2.0 中的数据操作:: 使用 GridView 和DetailView实现的主/从报表
- ASP.NET 2.0 中实现模板中的数据绑定系列(2)
- 在ASP.NET 2.0中操作数据之六十三:GridView实现批量删除数据
- ASP.NET 一句代码实现批量数据绑定
- 在ASP.NET页面中实现数据棒图柱子
- ASP.NET 2.0 中实现模板中的数据绑定系列(2)
- ASP.NET 2.0 中实现模板中的数据绑定系列(2)