控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

ASP.NET----编解码的静态类实现数据的加密

作者:佚名 出处:互联网 2011年08月05日 阅读:

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 

    } 

}

 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统