• Web.Config加密【转】


    注:本文转于http://www.cnblogs.com/scottckt/archive/2011/05/28/2061175.html

    有Web.Config,其中一部分配置如下:

      <!--应用程序设置值-->
      
    <appSettings>
        
    <add key="EricTest" value="EricTest"/>
        
    <add key="Encrypt" value="Encrypt value"/>
      
    </appSettings>
      
    <!--连接字符串-->
      
    <connectionStrings >
        
    <add name="EncryptConnection" connectionString="Data Source=.\SQL2000;Initial Catalog=Northwind;user id=sa;password=test"/>
        
    <add name="SQLExpress" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDB;user id=sa;password=test"
         providerName
    ="System.Data.SqlClient" />
      
    </connectionStrings>

    在加密前,先做一些准备工作。

    首先引用使用空间

    using System.Configuration;
    using System.Web.Configuration;

    将加密方式定义一下。主要是为了使用方便。

            /// <summary>
            
    /// 加密方式
            
    /// </summary>
            public enum EncryptType
            {
                DataProtectionConfigurationProvider,
                RSAProtectedConfigurationProvider
            }

    使用DPAPI加密

            /// <summary>
            
    /// 以DPAPI方式加密Config
            
    /// </summary>
            private void EncryptWebConfigByDPAPI()
            {
                Configuration configuration 
    = null;
                ConfigurationSection connectionSection 
    = null;

                
    //打开Request所在路径网站的Web.config文件
                configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
                
    //取得Web.config中connectionStrings设置区块
                connectionSection = configuration.GetSection("connectionStrings");
                
    //未加密时
                if (!connectionSection.SectionInformation.IsProtected)
                {
                    connectionSection.SectionInformation.ProtectSection(EncryptType.DataProtectionConfigurationProvider.ToString());
                    configuration.Save();
                }
            }

    加密前后的数据对比

      <!--加密前-->
      
    <connectionStrings >
        
    <add name="EncryptConnection" connectionString="Data Source=.\SQL2000;Initial Catalog=Northwind;user id=sa;password=test"/>
        
    <add name="SQLExpress" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=myDB;user id=sa;password=test"
         providerName
    ="System.Data.SqlClient" />
      
    </connectionStrings>

    -------------------------
      
    <!--加密后-->
      
    <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
        
    <EncryptedData>
          
    <CipherData>
            
    <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAPCENeNbVhU6C+bx4E8qcPAQAAAACAAAAAAAQZgAAAAEAACAAAADiE56Y0pGCoKEpOvxMVmMYO3tMqI/2W89HUIq0LeJAegAAAAAOgAAAAAIAACAAAACYuFOjNtk1iprbV91mmP8aCIULLZvRHAPwbAvoHvtXpKACAABP0/YOt/B8IG/eLnaxrDVCXPq6l8McVOvpL0hV4507VEpJb6FyRoM9c5TI6iIF6Jz8GQfnfQiF4P27RLyvvvu/R9KpuwDsZ0IKjpe47Nt/q/qOLlQx6vhQVE8yAjJ64DrujH6wjS2XdZSC03Co4u9OG/YdJX9zkpjVMNW8cx5FFklYmIzHxWx+b1ZFtZMu0CA8lzU4slkTBFmE3JMMa4KqC6EGedDXD3z53QkBt3KISWt1lM5ulPeQ8rfR7qrzUEWQsgaGLuNTJvCDwlPJWbZVzQaOHo71/epQRPHgvmNAkK1/hRqwXr0uMF9K6HNKCr0NDLFECLHcjCC4zR6QhhWdWT8FHPm2Zg2yucekeHQsrbiWtjZqg/DdyVPLWqmEdj82T1Gm9u9xhDHuNLpOT1FXy7bGjjok9TW1MxbWIXQ7bBih0mUwmvESD8aZGdxoH0XEFyy3flY2hjwszG4Opg3Qmz1/S0x6Sbz1vJJL7rk7FTdG3PwMDFvcvKlmmDZQTkM3SqplazwrjYI4IJBnIAL/uBxwMdxO515lWS55dDkdnx5r8HtGoeCN+cw5qFW8xxRPRsQKg6Sgti1GF2KzezZ5WJegN0hqUs18XoEpzCuuALbzHqRNBswwn0/GfdadxfwdNxoTHdJ+cQC3vSLk5f02pTW9CFZWDn30AFjIpMtArNltppLvWAP1YxtKMtyzjmv7iiIOsMtHFICTJAzO7FeTc+YToifu/wddPESZQB2MlrefnUK+cBkoSzAusfhtqUWfhblv6JnEq5A/PdohEkSu0dn2pC6AeqoG/Yngb6BJzpRFxssDfIkDH6LfXdo4s5WJXJx7VQNqUo4mmTKoUcp6DGmoogZqbHODL3MbgKFQyjdvXV9+4Aa9qOlHbcKDL5tAAAAAChj0UAPAO59pmMZ7gJ67ho1Mxjg9NTuAh/lG5XI+phDRzWcNRmjv2ZrUhz8eWIgCMoIG7NviBnbmCeT4K8pXUw==</CipherValue>
          
    </CipherData>
        
    </EncryptedData>
      
    </connectionStrings>

    对使用DPAPI加密的数据解密

            /// <summary>
            
    /// 解密DPAPI
            
    /// </summary>
            private void DecryptWebConfigByDPAPI()
            {
                Configuration configuration 
    = null;
                ConfigurationSection connectionSection 
    = null;

                
    //打开Request所在路径网站的Web.config文件
                configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
                
    //取得Web.config中connectionStrings设置区块
                connectionSection = configuration.GetSection("connectionStrings");
                
    if (connectionSection.SectionInformation.IsProtected)
                {
                    connectionSection.SectionInformation.UnprotectSection();
                    configuration.Save();
                }
            }

    调用DPAPI加密数据(无需解密)

            /// <summary>
            
    /// 取得加密后的数据
            
    /// </summary>
            private void GetEncryptWebConfigByDPAPI()
            {
                
    string cncryptConnection = WebConfigurationManager.ConnectionStrings["EncryptConnection"].ConnectionString;
                
    string sqlExpressConnection = WebConfigurationManager.ConnectionStrings["SQLExpress"].ConnectionString;
            }

    使用RSA加密

            /// <summary>
            
    /// 以RSA方式加密Config
            
    /// </summary>
            private void EncryptWebConfigByRsa()
            {
                Configuration configuration 
    = null;
                ConfigurationSection connectionSection 
    = null;

                
    //打开Request所在路径网站的Web.config文件
                configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
                
    //取得Web.config中connectionStrings设置区块
                connectionSection = configuration.GetSection("appSettings");
                
    //未加密时
                if (!connectionSection.SectionInformation.IsProtected)
                {
                    connectionSection.SectionInformation.ProtectSection(EncryptType.RSAProtectedConfigurationProvider.ToString());
                    configuration.Save();
                }
            }

    加密前后数据对比: 

      <!--加密前-->
      
    <appSettings>
        
    <add key="EricTest" value="EricTest"/>
        
    <add key="Encrypt" value="Encrypt value"/>
      
    </appSettings>
    ------------------------------
      
    <!--加密后-->
      
    <appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
        
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
          xmlns
    ="http://www.w3.org/2001/04/xmlenc#">
          
    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
          
    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            
    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
              
    <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
              
    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                
    <KeyName>Rsa Key</KeyName>
              
    </KeyInfo>
              
    <CipherData>
                
    <CipherValue>CJIkulw6qBtLeY5MJ9bs1ROpF1l3f4ulRzKnd6ZXN6XyG9O+b6Hr52ijK1AL9/+nsBseAPfdKDGaX/SKlJYwgzHhhi9sBrDBJ10dJcSnuGuWpI5zSLc+QHdpV0Z4iJTw83jmRDb9eFCX7aG60qWl52ofeqlI/ps1HsOjlKPSv8M=</CipherValue>
              
    </CipherData>
            
    </EncryptedKey>
          
    </KeyInfo>
          
    <CipherData>
            
    <CipherValue>y1aEM/BRwcwZXWeuLe9mbakU8AuI7CpElrjoJgQEfzaoZXq7uEJspQAxJyDIYmCF4EgjKhE7pY6WBRAjRaBBODxxEQHGJ8I1+T554H8zosZ2InO43h5X0ZjCmvAWxNbEq1rP9DnuTcHEYqrw70nNShf79W6e2fmUF1DoVpwYNWMLeHJCP7ZkZg==</CipherValue>
          
    </CipherData>
        
    </EncryptedData>
      
    </appSettings>

    解密RSA加密数据

            /// <summary>
            
    /// 解密Rsa
            
    /// </summary>
            private void DecryptWebConfigByRsa()
            {
                Configuration configuration 
    = null;
                ConfigurationSection connectionSection 
    = null;

                
    //打开Request所在路径网站的Web.config文件
                configuration = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
                
    //取得Web.config中connectionStrings设置区块
                connectionSection = configuration.GetSection("appSettings");
                
    if (connectionSection.SectionInformation.IsProtected)
                {
                    connectionSection.SectionInformation.UnprotectSection();
                    configuration.Save();
                }
            }

    调用使用RSA加密数据(无需解密)

            /// <summary>
            
    /// 取得加密后的数据
            
    /// </summary>
            private void GetEncryptWebConfigByRsa()
            {
                
    string cncryptConnection = WebConfigurationManager.AppSettings["EricTest"];
                
    string sqlExpressConnection = WebConfigurationManager.AppSettings["Encrypt"];
            }
  • 相关阅读:
    IOS使用正则表达式去掉html中的标签元素,获得纯文本
    iOS 拨打电话的三种方式总结
    iOS中Block的基础用法
    如何避免在Block里用self造成循环引用
    对MAC自带的SVN进行升级
    IOS开发之记录用户登陆状态
    Xcode7 添加PCH文件
    mysql upgrade
    Ubuntu下更改用户名和主机名
    mysql 查询的时候没有区分大小写的解决方案
  • 原文地址:https://www.cnblogs.com/zgshi/p/2276798.html
Copyright © 2020-2023  润新知