分享

web.config 加密与解密 实战

 悟静 2011-12-12

首先添加引用:

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();
         }
     }

实践:
加密前的配置文件:

<?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>

---------------------------------------------------------------------------------------------------

或者:

//解密可以写在页面,但也加密如何进行?
protected void Page_Load(object sender, EventArgs e)
    {
        //获取网站根目录下的web.config配置文件对蠏
        Configuration config = WebConfigurationManager.OpenWebConfiguration("~/");
        //获取appSettings配置块信息
        ConfigurationSection appSettings = config.GetSection("appSettings");
        //判断配置块是否加密,如果己经加密,则进行解密
        if (appSettings.SectionInformation.IsProtected)
        {
            appSettings.SectionInformation.UnprotectSection();
        }
        else
        {
            //如果没有加密,则调用ProtectSection方法进行加密工作
            appSettings.SectionInformation.ProtectSection(
            "DataProtectionConfigurationProvider");
        }
        //保存配置信息
        config.Save();
        Response.Write("读取web.config配置文件中的<appSettings>配置节<br/>");
        foreach (string key in WebConfigurationManager.AppSettings.Keys)
        {
            Response.Write("键值名: " + key + "<br />");
            Response.Write("键值值为: " + WebConfigurationManager.AppSettings[key] + "<br/><br/>");
        }
    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多