加密,解密Web.Config

加密:

在命令提示符下键入:

aspnet_regiis -pef connectionStrings 要加密的web.config完整路经

解密:

 在命令提示符下键入:

aspnet_regiis -pdf connectionStrings 要解密的web.config完整路经

 

D:\Program Files\Microsoft Visual Studio 9.0\VC>aspnet_regiis -pdf connectionStrings c:\
正在解密配置节...
成功!

D:\Program Files\Microsoft Visual Studio 9.0\VC>aspnet_regiis -pef connectionStrings c:\
正在加密配置节...
成功!

D:\Program Files\Microsoft Visual Studio 9.0\VC>

 

aspnet_regiis.exe -pef connectionStrings C:\ -prov "DataProtectionConfigurationProvider"

使用“DataProtectionConfigurationProvider”方式加密

 
aspnet_regiis.exe -pe "connectionStrings" -app "/SampleApplication" -prov "TripleDESProvider"

使用“TripleDESProvider”方式加密

 
 一、aspnet_regiis.exe加解密

使用ASPNET_REGIIS命令对web.config加解密步骤如下:

step1 切换到,NET Framework对应目录

cd c:/windows/Microsoft.NET/Framework/v2.0. 50727

step2 加密 connectionString区块

aspnet_regiis -pe "connectionStrings" -app "VisualPath" -prov "RASProtectedConfigurationProvider"

回车后,aspnet_regiis会去c:/Inetpub/wwwroot中寻找VisualPath网站目录中的web.config文件,进而加密connectionStrings区块。类似也可以加密aapSettings、mailSettings区块。

 

-pe 加密的区块<connectionStrings/><aapSettings/><mailSettings/>
-app web应用程序的虚拟目录
-prov 何种加密方式的Provider

step3 解密区块

aspnet_regiis -pd "connectionStrings" -app "VisualPath"
注:
如果应用程序目录所在目录不在c:/Inetpub/wwwroot路径下,而是自定义的路径,无论如何下达aspnet_regiis指令,都会因为路径错,无法顺利加密成功。

二、Configuration API 加解密

Configuration类(System.Configuration.Configuration)
WebConfigurationManager类(System.Web.Configuration.WebConfigurationManager)

step1 获取当前应用程序路径

String appPath=this.Request.ApplicationPath;

step2 打开该路径的应用程序的web.config

Configuration config=WebConfigurationManager.OpenWebConfiguration(appPath);

step3 获取<connectionStrings>区块

ConnetionStringsSection connectionStrings=config.ConnectionStrings;

step4 加密Provider

(1)DPAPIProtectedConfigurationProvider
Windows Data Protection API ,加密字符串"DataProtectedConfigurationProvider"
(2)RSAProtectedConfigurationProvider
使用RSA算法加解密 ,加密字符串"RSAProtectedConfigurationProvider"

Configuration myConfiguration =null;
ConfigurationSection myConnetionStrings 
=null;

myConfiguration
=WebconfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
appSettings
=myConfiguration.GetSection("connectionStrings");

if(!myConnetionStrings.SectionInformation.IsProtected)
{
    myConnetionStrings.SectionInformation.ProtectSection(
"DataProtectionConfigurationProvider");

    
//myConnetionStrings.SectionInformation.ProtectSection("RSAConfigurationProvider");
    myConfiguration.Save();
}
解密
myConnetionStrings.SectionInformation.UnprotectSection();
myConfiguration.Save();
posted @ 2012-07-29 09:32  星火卓越  阅读(284)  评论(0编辑  收藏  举报