Enterprise Library2.0中加密数据库连接字符串
来源:互联网 发布:达内少儿编程 编辑:程序博客网 时间:2024/06/05 20:13
Enterprise Library2.0中加密数据库连接字符串
看了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());
}
运行程序后,打开配置文件可以看到,连接字符串已经变成密文了。最后注意一点:加密的字符串在被加载到内存的时候解密。
看了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());
}
运行程序后,打开配置文件可以看到,连接字符串已经变成密文了。最后注意一点:加密的字符串在被加载到内存的时候解密。
- Enterprise Library2.0中加密数据库连接字符串
- Enterprise Library2.0中加密数据库连接字符串
- Enterprise Library2.0中加密数据库连接字符串
- Enterprise Library2.0数据库常用操作
- Enterprise Library2.0(1):Data Access Application Block
- Enterprise Library2.0(2):Logging Application Block
- Enterprise Library2.0(1):Data Access Application Block学习
- Enterprise Library2.0(1):Data Access Application Block学习
- Enterprise Library2.0(1):Data Access Application Block学习
- Enterprise Library2.0(2):Logging Application Block学习
- asp.net2.0加密数据库连接字符串
- .NET数据库连接字符串加密
- 数据库连接字符串加密
- 关于IBatisNet的配置文件中数据库连接字符串加密处理
- 动态设置并加密App.Config中数据库连接字符串
- ASP.NET加密和解密Web.config中数据库连接字符串
- ASP.net2.0中数据库连接字符串
- 加密数据库连接字符串(asp.net 2.0)
- Iproute2构建linux下的路由器
- 从ERP来了解MES
- 测试文档
- .net中的WMI编程(二):WMI中的WQL语言和WQL的测试工具
- 分层与接口
- Enterprise Library2.0中加密数据库连接字符串
- 检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败
- NET强名
- Vs2005报表设计器XML分析总结
- 这是四舍五入的最快方法
- 解决“未能创建 Mutex”的问题
- Serv-U FTP Server 6.4.0.6 汉化版(吕达嵘)
- 用完成端口开发大响应规模的Winsock应用程序
- 安装程序无法复制文件staxmem.dl_.