.net 实现字符串加密解密

26 篇文章 0 订阅
10 篇文章 0 订阅
        #region ========加密========

        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="Text"></param>
        /// <returns></returns>
        public static string Encrypt(string Text)
        {
            return Encrypt(Text, "litianping");
        }
        /// <summary> 
        /// 加密数据 
        /// </summary> 
        /// <param name="Text"></param> 
        /// <param name="sKey"></param> 
        /// <returns></returns> 
        public static string Encrypt(string Text, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            byte[] inputByteArray;
            inputByteArray = Encoding.Default.GetBytes(Text);
            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            StringBuilder ret = new StringBuilder();
            foreach (byte b in ms.ToArray())
            {
                ret.AppendFormat("{0:X2}", b);
            }
            return ret.ToString();
        }

        #endregion

        #region ========解密========


        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="Text"></param>
        /// <returns></returns>
        public static string Decrypt(string Text)
        {
            return Decrypt(Text, "litianping");
        }
        /// <summary> 
        /// 解密数据 
        /// </summary> 
        /// <param name="Text"></param> 
        /// <param name="sKey"></param> 
        /// <returns></returns> 
        public static string Decrypt(string Text, string sKey)
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            int len;
            len = Text.Length / 2;
            byte[] inputByteArray = new byte[len];
            int x, i;
            for (x = 0; x < len; x++)
            {
                i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
                inputByteArray[x] = (byte)i;
            }
            des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
            des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            return Encoding.Default.GetString(ms.ToArray());
        }

        #endregion
用于加密.net WebForm的Web.Config文件中的数据库连接字符串. 本软件支持.net 2.0 和 .net 4.0. 注意事项: 1.需要安装.net4.0运行库才能运行. 2.程序中需要获取web.config路径时,可以使用复制把web.config所在路径粘贴到程序中.快捷键不是Ctrl + V而是右键选择"编辑"-"粘贴".如果右键点击程序窗口无效,可以右键点击程序标题栏. 扩展知识: 连接字符串的安全性 一、尽量使用windows验证而不是sql server验证: 1、安全性易管理 2、不需要设置用户名和密码(这样传递的时候不会被截取吧) 3、密码不会通过明文在网络上传播 原因:如果用sql server验证在配置文件中的话,用户名和密码很容易被别人看到,但是如果你用windows验证的话,用户名和密码是存储在本机windows文件中的 这就很难被人发现。 二、sql server身份验证 1、强制实施密码策略 2、强制密码过期 3、用户在下次登录时必须更改密码 怎么设置:直接在sql server中进行设置 如果是sql server验证的话,Persist security info 一定设置为false,这样会保证敏感信息不被暴露(如ID、密码)。 三、防止sql注入攻击: 这个注入好像是打开Min Pool Size=999999一个很大的值,来破坏数据库。 这个链接保护的方法最好是: Date Source=(local);Initial Catalog=Works;User ID=sa;Password="password01!;Pooling=true" 看到后面没有,加一个双引号。 四、在配置文件存储链接字符串: <configuration> <connectionStrings configSource="connection.config"> </configuration> 然后在connection.config里有这样的设置: <connectionStrings> <add name="AW" connectionString="server......"> </connectionStrings> 注意:connection.config属性需要设置,设置为复制到应用程序里面。不然web.config就找不到这个文件。 五、用RSA非对称加密。网上查。 六、asp.net iis注册工具(aspnet_regiis.exe) 使用加密:aspnet_regiis -pef "connectionStrings" F:\study\ComputerDM\Web 解密:aspnet_regiis -pdf "connectionStrings" F:\study\ComputerDM\Web
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值