对web.config文件的节点进行加解密

两种保护配置提供程序:

1、DataProtectionConfigurationProvider(Windows数据保护API(DPAPI)提供程序)

     这个提供程序使用Windows内置的密码学技术来加解密配置节。默认情况下,这个提供程序使用本机的密钥。你还能够使用用户密钥,但是这要求进行一点定制。 DataProtectionConfigurationProvider提供程序使用机器级密钥,这是最简单的方法,因为它不请求创建任何密钥或密钥容器。其消极的一面在于:一个加密的配置文件仅能够用于首先实现加密的web服务器上;而且,使用机器密钥将允许加密的文本能够被web服务器上的任何网站所解密。     

     用"DataProtectionConfigurationProvider" 参数,加密后,可以不用解密处理,系统依旧能使用原来的连接串正常连接数据库!

2、RSAProtectedConfigurationProvider(RSA保护配置提供程序)

     使用RSA公钥加密来加解密配置节。使用这个提供程序,你需要创建存储用于加解密配置信息的公钥和私钥的密钥容器。你能够在一个多服务器场所下使用RSA,这只要创建可输出的密钥容器即可。如果需要的话,你还能够创建自己的保护设置提供程序。

 

加解密类:

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Configuration;
using System.Web;
using System.Web.Configuration;

namespace Zhigang.Encrypt 
ExpandedBlockStart.gifContractedBlock.gif

ExpandedSubBlockStart.gifContractedSubBlock.gif
/**//// <summary>
/// Encrypt web.config section
/// </summary>

public class SectionEncrypt
ExpandedSubBlockStart.gifContractedSubBlock.gif
{
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
    
/// Class SectionEncrypt's constructor
    
/// </summary>

    public SectionEncrypt()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
//
        
// TODO: Add constructor logic here
        
//
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
    
/// Encrypt web.config section
    
/// </summary>
    
/// <param name="sectionName">The section name of web.config file </param>
    
/// <param name="provider">encrypt section</param>

    public void EncryptSection(string sectionName, string provider, HttpRequest request)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        Configuration config 
= WebConfigurationManager.OpenWebConfiguration(request.ApplicationPath);
        ConfigurationSection section 
= config.GetSection(sectionName);
        
if (section != null && !section.SectionInformation.IsProtected)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            section.SectionInformation.ProtectSection(provider);
            section.SectionInformation.ForceSave 
= true;
            config.Save(ConfigurationSaveMode.Modified);
        }

    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
    
/// deencrypt web.config section
    
/// </summary>
    
/// <param name="sectionName">The section name of web.config file </param>

    public void DeEncryptSection(string sectionName, HttpRequest request)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        Configuration config 
= WebConfigurationManager.OpenWebConfiguration(request.ApplicationPath);
        ConfigurationSection section 
= config.GetSection(sectionName);
        
if (section != null && section.SectionInformation.IsProtected)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            section.SectionInformation.UnprotectSection();
            section.SectionInformation.ForceSave 
= true;
            config.Save(ConfigurationSaveMode.Modified);
        }

    }

}

}

 

调用方式:

ContractedBlock.gif ExpandedBlockStart.gif Code
 SectionEncrypt section = new SectionEncrypt();
        section.EncryptSection(
"appSettings""DataProtectionConfigurationProvider",Page .Request );

转载于:https://www.cnblogs.com/cry/archive/2008/09/26/1299589.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值