首先添加引用:
using System.Web.Configuration;
加密操作如下:
private void ProtectSection(string sectionName, string provider)
{
Configuration config =
WebConfigurationManager.
OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(sectionName);
if (section != null && !section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection(provider);
config.Save();
}
}
解密操作如下:
private void UnProtectSection(string sectionName)
{
Configuration config =
WebConfigurationManager.
OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection(sectionName);
if (section != null && section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
config.Save();
}
}
實(shí)踐:
加密前的配置文件:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="name" value="shy520" />
<add key="address" value="cnblogs" />
</appSettings>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
加密后的配置文件:
<?xml version="1.0"?>
<configuration>
<appSettings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>
AQAAANCMnd8BFdERjHoAwE/Cl s
BAAAABi1ATlNkEUGEf0XyWGL2Xg
QAAAACAAAAAAADZgAAqAAAABAAA
ABIhxMWlazAntwIIpST1CDXAAAA
AASAAACgAAAAEAAAAPz/YKYx07c
b h4fqdr4fkLgAAAAX1Ieyc WSx
AfsDW1vn2C/fXsG2TAnYeUgaCov
8e3nGFTHHsH91gLiqKregFPYzGR
vW1xrez/3VwOmJI9eS7EFKrcXej
NnHL66kg2iNRk3ntLNZlZtTs3cZ
9w63u47VKAjs6miWsGBz2GntL/9
UGHLELigrJcr3YJ lsjOscExQnv
HGvA48EfxpD tEiFBtgXeHsFkQX
cqGySshx16vCt2GUNUC3ZmEAhBh
UsAFkPIYqelYHd4 m9a/xPe2tqw
GIbla1wbW2NDEfrzJPwnkfmpNqR
hXijKImipwXbDVYy6o0UAAAAs8D
suYNOhJ7qAjJa2c/4eUC7sks=
</CipherValue>
</CipherData>
</EncryptedData>
</appSettings>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
---------------------------------------------------------------------------------------------------
或者:
//解密可以寫在頁面,但也加密如何進(jìn)行?
protected void Page_Load(object sender, EventArgs e)
{
//獲取網(wǎng)站根目錄下的web.config配置文件對(duì)蠏
Configuration config = WebConfigurationManager.OpenWebConfiguration("~/");
//獲取appSettings配置塊信息
ConfigurationSection appSettings = config.GetSection("appSettings");
//判斷配置塊是否加密,如果己經(jīng)加密,則進(jìn)行解密
if (appSettings.SectionInformation.IsProtected)
{
appSettings.SectionInformation.UnprotectSection();
}
else
{
//如果沒有加密,則調(diào)用ProtectSection方法進(jìn)行加密工作
appSettings.SectionInformation.ProtectSection(
"DataProtectionConfigurationProvider");
}
//保存配置信息
config.Save();
Response.Write("讀取web.config配置文件中的<appSettings>配置節(jié)<br/>");
foreach (string key in WebConfigurationManager.AppSettings.Keys)
{
Response.Write("鍵值名: " + key + "<br />");
Response.Write("鍵值值為: " + WebConfigurationManager.AppSettings[key] + "<br/><br/>");
}
}