`
SunnyYoona
  • 浏览: 368222 次
社区版块
存档分类
最新评论

[c#]Web.config加密和解密

 
阅读更多

一:我们为什么要对web.config配置文件中的配置节加密?

  二:怎么样加密和解密?

  三:实例

  四:运行效果

  一:我们为什么要对web.config配置文件中的配置节加密?

  因为在我们的项目中,有的配置节可能包含敏感信息,我们看下面的<connectionStrings/>配置节中包含了我们连接数据库的用户名和密码以及IP地址,这要是暴露出去是很危险的,还有<identity/>配置节中包含了运行时使用的模拟账号的用户名和密码,这些配置节都包含着敏感信息,我们不希望密码以明文的方式存储在配置文件里,所以我们要对其进行加密

  <connectionStrings>
<add name="LocalHostEPGConnectionStr" connectionString="server=.;database=NewNewEPG;User ID=sa;password=123" providerName="System.Data.SqlClient"/>
  </connectionStrings>

  二:怎么样加密和解密?

  使用SectionIntomation对象可以对web.config进行加密和解密

  如果要加密一个配置节,只需要调用SectionIntomation对象的ProtectSection()方法,传递一个要使用的提供程序的名字来执行加密

  如果要解密一个配置节,当需要解密文件的配置节时,只需要调用SectionIntomation对象的UnprotectSection()方法完成解密

  1:ProtectSection()方法

  此方法对web.config中的配置节进行加密

  语法如下:

  public void ProtectSection(string ProtectProvider)

  参数说明如下:
  ProtectProvider:要使用的保护提供程序的名称,默认下包含以下保护提供程序加密,这个参数必须写已存在的保护提供程序的名称,比如:“RSAProtectedConfigurationProvider”,不能写“MyName”,否则会报找不到保护提供程序“MyName”

  1.1:RSAProtectedConfigurationProvider:使用RSA加密算法对数据进行加密和解密

  1.2:DPAPIProtectedConfigurationProvider:使用Windows数据保护API(DPAPI)对数据进行加密和解密

  2:UnprotectSection()方法

  此方法对关联的配置节移除受保护的配置解密

  三:实例

  ConfigurationManager来自命名空间System.Configuration,而WebConfigurationManager来自命名空间System.Web.Configuration,微软建议:在Web应用程序配置文件的操作时建议采用WebConfigurationManager ;在客户端配置文件的操作时建议采用ConfigurationManager ,我们都得引用这两个命名空间

  我们最后看到解密后的<connectionStrings/>配置节和未加密前的配置节是一模一样的

  WebConfigEncryptDecrypt.aspx

  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.Configuration;
  using System.Configuration;

  namespace EPG.WebAdmin.EncryptDecrypt
  {
  public partial class WebConfigEncryptDecrypt : System.Web.UI.Page
   {
   protected void Page_Load(object sender, EventArgs e)
   {

  }

  /// <summary>
   /// 加密Web.config文件
   /// </summary>
   protected void btnEncrypt_Click(object sender, EventArgs e)
  {
   //得到当前配置文件
   Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
  //得到节部分
  ConfigurationSection section = config.GetSection("connectionStrings");
  //如果节不为空并且这个节没被保护
  if (section != null && !section.SectionInformation.IsProtected)
  {
   //保护指定的节使用RSA加密算法对数据进行加密和解密
   section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");

        //保存
   config.Save();

        RegisterStartupScript("","<script>alert('加密成功!')</script>");
   }
   }

    
  /// <summary>
   /// 解密Web.config文件
   /// </summary>
   protected void btnDecrypt_Click(object sender, EventArgs e)
   {
   //得到当前配置文件
   Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
  //得到节部分
   ConfigurationSection section = config.GetSection("connectionStrings");
   //如果节不为空并且这个节被保护
   if (section != null && section.SectionInformation.IsProtected)
   {
   //保护指定的节使用RSA加密算法对数据进行加密和解密
   section.SectionInformation.UnprotectSection();
   //保存
   config.Save();
   RegisterStartupScript("", "<script>alert('解密成功!')</script>");
   }
   }

  }
  }

  四:运行效果

  界面设计

  

  未加密的<connectionStrings/>配置节

  

  加密后的<connectionStrings/>配置节

  

  解密后的<connectionStrings/>配置节

  





分享到:
评论

相关推荐

    C# Web.Config 加密与解密 3

    C# Web.Config 加密与解密 整合版

    C# Web.Config 加密与解密

    用后台编码的形式对web.config数据库连接字符串或者某个节点进行加密这里提供俩种方式:DataProtectionConfigurationProvider和RSAProtectedConfigurationProvider

    C# Web.Config 加密与解密 2

    对于 http://blog.csdn.net/sat472291519/article/details/70859843 博客的补充增加了 获取数据库数据测试

    app.config和或web.config中ConnectionString的加密与解密

    app.config和或web.config中ConnectionString的加密与解密

    C# ASP.NET - 加密解密Web.config文件

    说明:使用System.Configuration.SectionInformation中的ProtectSection和UnprotectSection实现对配置节的加密和解密;

    C#中Web.Config加密与解密的方法

    C#中Web.Config加密与解密的方法,需要的朋友可以参考一下

    Web.Config中的连接字符串的加密与解密

    如何加密Web.Config中的连接字符串?Asp.Net用一种无格式的文本文件储存所有的配置信息叫Web.Config和Machine.Config,我们保存所有致关重要的信息,包括数据库连接字符串,其中就有数据库的用户名,密码,一旦在没有...

    winform对项目的配置文件加密解密

    本实例有个错误一直没得到解决,希望有高手帮忙改改,该程序是加密项目.exe.config文件,并在程序中解密连接数据库,但现在取出字符串后报错

    WEBCONFIG数据库链接加密解密算法

    ASP.NET的配置文件里面一般会有数据库连接信息,如果不加密,很危险。

    asp.net access web.config denied

    您可能感兴趣的文章:详解ASP.NET配置文件Web.configasp.net代码中修改web.config节点的具体方法ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法asp.net web.config加密解密方法ASP.NET(C#)应用...

    C#数据库连接字符串加密解密类

    .net下C#数据库连接字符串在配置文件中的加密解密类

    asp.net 禁用viewstate在web.config里

    您可能感兴趣的文章:详解ASP.NET配置文件Web.configasp.net代码中修改web.config节点的具体方法ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法asp.net web.config加密解密方法ASP.NET(C#)应用...

    对称加解密算法类(C#)

    C#实现的对称加解密类 可以用来对Web.config中的内容进行加解密

    HldWcfServer.zip

    使用技术:IIS+ASP.NET+WCF+ORACLE+C# ...WCF配置文件:HldWcfServer.Web.config,上面的配置是经过了一系列的修正后得到的比较好的配置内容,可以支持net.tcp协议。 有疑问可以留言,有时间回答。

    DBHelper数据库操作类(支持OleDb、MySQL、Oracle、SQL、SQLite).zip

    数据库操作类(支持OleDb、MySQL、Oracle、SQL、SQLite、) 操作: 获取连接字符串 得到web.config里配置项的数据库连接字符串。 数据库连接字符串(web.config来配置),可以动态更改connectionString...DES加密/解密类

    系统关机软件源码

    只能测试当天时间设置 &lt;2&gt;对其web.cofig加密(对会对web.config加密者,肯定会解密) &lt;3&gt;希望你下载,再次开发. &lt;4&gt;是一个不错的关机软件

    ASP.NET开发典型模块大全(C#)23到26章源码

     29.1 Web.config加密与解密 631  29.1.1 认识Web.config配置文件 631  29.1.2 Web.config文件加密与解密的意义 633  29.1.3 使用SectionInformation类实现加密与解密 634  29.1.4 命令行工具aspnet_...

    Asp.net,C# 加密解密字符串的使用详解

    首先在web.config | app.config 文件下增加如下代码: 代码如下:&lt;?xml version=”1.0″?&gt;   ”IV” value=”SuFjcEmp/TE&gt; ”Key” value=”KIPSToILGp6fl+3gXJvMsN4IajizYBBT”/&gt;  &lt;/configuration&gt;IV:...

    加密连接字符串

    C#2010用于D_E_S解密和加密的工具,可对APP.CONFIG数据库连接加密,然后再在程序内部解密,而你只要保护好密钥就可以对客户端安全的加入app.config,也可方便更新连接服务器的密码。

    加密/解密内部和外部部分

    除了web.config内部节加密/解密外,此工具还显示了如何对config文件中的外部节进行加密/解密。

Global site tag (gtag.js) - Google Analytics