程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Enterprise Library 2.0中加密數據庫連接字符串

Enterprise Library 2.0中加密數據庫連接字符串

編輯:關於.NET

看了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的引用

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. 下一頁:
Copyright © 程式師世界 All Rights Reserved