当前位置:主页   - 电脑 - 网站开发 - ASP.Net
Enterprise Library2.0中加密数据库连接字符串
来源:网络   作者:   更新时间:2012-03-28
收藏此页】    【字号    】    【打印】    【关闭

  看了SHY520写的关于Data Access Application Block的文章,写得不错,忽略了一点就是如何去加密数据库连接字符串,这儿我简单的介绍一下。我们知道,在Enterprise Library1.1中加密连接字符串,需要依赖于Cryptography Application Block。.NET Framework2.0中已经内置了这项功能,通过Configuration命名空间下的一些类来完成,支持两种类型的加密:

  DPAPIProtectedConfigurationProvider:使用Windows Data Protection API (DPAPI)

  RsaProtectedConfigurationProvider:使用RSA算法

  下面来看一下具体的实现方法,假设已经有这样的一个配置文件:


<?xml version="1.0" encoding="utf-8"?>

<configuration>

 <configSections>

  <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

 </configSections>

 <dataConfiguration defaultDatabase="QuickStarts" />

 <connectionStrings>

  <add name="QuickStarts" connectionString="Database=EntLibQuickStarts;Server=RJ-097;Integrated Security=SSPI;"

   providerName="System.Data.SqlClient" />

 </connectionStrings>

</configuration>

  1.添加对System.Configuration.dll的引用

  Enterprise Library2.0中加密数据库连接字符串

  2.在Program.cs中引入命名空间

  using System.Configuration;

  3.编写相关的代码:

/**//// <summary>

/// Author:TerryLee

/// From:http://terrylee.cnblogs.com

/// </summary>

static void EncryptConfiguration()
{ 
  // 使用什么类型的加密

  string provider = "RsaProtectedConfigurationProvider";

  Configuration config = null;

  config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

  // 加密连接字符串

  ConfigurationSection section = config.ConnectionStrings;

  if ((section.SectionInformation.IsProtected == false) &&

    (section.ElementInformation.IsLocked == false))

  {
   section.SectionInformation.ProtectSection(provider);

    section.SectionInformation.ForceSave = true;

    config.Save(ConfigurationSaveMode.Full);

  }
}
该方法的调用放在程序的主程序的入口点:

[STAThread]

static void Main()
{
  // Protect the Connection Strings

  EncryptConfiguration();

  Application.Run(new MainForm());

}
运行程序后,打开配置文件可以看到,连接字符串已经变成密文了。最后注意一点:加密的字符串在被加载到内存的时候解密。

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明