看了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>

.添加对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());

}

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

Enterprise Library 中加密数据库连接字符串的更多相关文章

  1. EF--Codefirst 加密数据库连接字符串

    http://www.tuicool.com/articles/QvYbEn 一.EF,CodeFirst加密SQL连接符 public LifeHelpContext() : base(" ...

  2. 创建自己的RSA密钥来保护web.config 加密数据库连接字符串

    通过创建自己的RSA密钥来保护web.config1创建RSA密钥:C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis - ...

  3. Winform RsaProtectedConfigurationProvider 加密数据库连接字符串

    private static string _strProvider = "RsaProtectedConfigurationProvider"; /// <summary& ...

  4. 从App.config中读取数据库连接字符串

    1.首先在App.config文件中添加如下代码注意<connectionStrings>插入位置. <connectionStrings> <add name=&quo ...

  5. 系列文章--Enterprise Library文章总结

    自Enterprise Library 1.1 推出以来,Terry写了一系列的关于Enterprise Library的文章,其中得到了很多朋友的支持,在这里一并表示感谢.为了方便大家的阅读,这里我 ...

  6. 关于IBatisNet的配置文件中数据库连接字符串加密处理

    我们通常在IBatisNet配置文件 properties.config 加入数据库连接字符串.数据库连接字符串直接放在里面,没有被加密,很不安全.如果我们把 properties.config 文件 ...

  7. web config数据库连接字符串加密

    ASP.NET web.config中,数据库连接字符串的加密与解密 ASP.NET web.config中,数据库连接字符串的加密与解密. 开始--->运行,输入cmd,接着输入以下内容 加密 ...

  8. ASP.NET数据库连接字符串的加密与解密

    ASP.NET web.config中,数据库连接字符串的加密与解密. 虽然不怎么新鲜,但相信还是有许多人不知道,好,不说废话,直接给方法:开始--->运行,输入cmd,接着输入以下内容 加密: ...

  9. 微软企业库5.0 学习之路——扩展学习篇、库中的依赖关系注入(重构 Microsoft Enterprise Library)[转]

    这篇文章是我在patterns & practices看到的一篇有关EntLib5.0的文章,主要介绍了EntLib5.0的这次的架构变化由来,觉得很不错,大家可以看一下! 在过去几年中,依赖 ...

随机推荐

  1. BZOJ3850: ZCC Loves Codefires

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3850 题解:类似于国王游戏,推一下相邻两个元素交换的条件然后排个序就可以了. 代码: #inc ...

  2. Cocoa Touch(一)开发基础:Xcode概念、目录结构、设计模式、代码风格

    Xcode相关概念: 概念:project 指一个项目,该项目会负责管理软件产品的全部源代码文件.全部资源文件.相关配置,一个Project可以包含多个Target. 概念:target 一个targ ...

  3. liux之sed用法

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

  4. 苹果iphone4s完美越狱后破解4g网络方法

    苹果iphone4s完美越狱后破解4g网络方法教程 作者:佚名 字体:[增加 减小] 来源:互联网 时间:01-15 10:07:25我要评论 自从港版iPhone5s/c能够破解移动4G网络后, i ...

  5. 图片的android:src 及android:background共存

    ---恢复内容开始--- 需求:给ImageView添加背景色 效果: 实现分析: 1.目录结构: 代码实现: 1.activity_main.xml <merge xmlns:android= ...

  6. POJ 1068 Parencodings

    Parencodings Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24932   Accepted: 14695 De ...

  7. vim简单使用教程

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  8. (原创)LAMP教程6-使用SecureCRTPortable工具远程连接centos

    (原创)LAMP教程6-使用SecureCRTPortable工具远程连接centos 是的,今天老柯就给大家介绍一款可以远程连接centos的工具,是的这个就是目前,最夯实的,最多人使用的Secur ...

  9. C++调用Matlab引擎及Eigen配置

    这个周开始要着手实现网格水印的代码了,虽然还什么都不会,但也只能一步步摸索着往前走了. 我要实现的论文题目是<<Watermarking 3D Polygonal Meshes in th ...

  10. OnItemClickListener 的参数详解(转)

    转载地址:http://blog.iamzsx.me/show.html?id=147001 我们在使用ListView的时候,一般都会为ListView添加一个响应事件android.widget. ...