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算法
下面来看一下具体的实现方法,假设已经有这样的一个配置文件:
None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
None.gif
< configuration >
None.gif
None.gif  
< configSections >
None.gif
None.gif    
< section  name ="dataConfiguration"  type ="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"   />
None.gif
None.gif  
</ configSections >
None.gif
None.gif  
< dataConfiguration  defaultDatabase ="QuickStarts"   />
None.gif
None.gif  
< connectionStrings >
None.gif
None.gif    
< add  name ="QuickStarts"  connectionString ="Database=EntLibQuickStarts;Server=RJ-097;Integrated Security=SSPI;"
None.gif
None.gif      providerName
="System.Data.SqlClient"   />
None.gif
None.gif  
</ connectionStrings >
None.gif
None.gif
</ configuration >
None.gif
1 .添加对System.Configuration.dll的引用
2 .在Program.cs中引入命名空间
None.gif using  System.Configuration;
3 .编写相关的代码:
ExpandedBlockStart.gif /// <summary>
InBlock.gif
InBlock.gif
/// Author:TerryLee
InBlock.gif
InBlock.gif
/// From:[url]http://terrylee.cnblogs.com[/url]
InBlock.gif
ExpandedBlockEnd.gif
/// </summary>

None.gif
None.gif
static   void  EncryptConfiguration()
ExpandedBlockStart.gif
{   
InBlock.gif    
// 使用什么类型的加密
InBlock.gif

InBlock.gif    
string provider = "RsaProtectedConfigurationProvider";
InBlock.gif
InBlock.gif    Configuration config 
= null;
InBlock.gif
InBlock.gif    config 
= ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
InBlock.gif
InBlock.gif    
// 加密连接字符串
InBlock.gif

InBlock.gif    ConfigurationSection section 
= config.ConnectionStrings;
InBlock.gif
InBlock.gif    
if ((section.SectionInformation.IsProtected == false&&
InBlock.gif
InBlock.gif        (section.ElementInformation.IsLocked 
== false))
InBlock.gif
ExpandedSubBlockStart.gif    
{
InBlock.gif      section.SectionInformation.ProtectSection(provider);
InBlock.gif
InBlock.gif        section.SectionInformation.ForceSave 
= true;
InBlock.gif
InBlock.gif        config.Save(ConfigurationSaveMode.Full);
InBlock.gif
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}
该方法的调用放在程序的主程序的入口点:
None.gif [STAThread]
None.gif
None.gif
static   void  Main()
ExpandedBlockStart.gif
{
InBlock.gif    
// Protect the Connection Strings
InBlock.gif

InBlock.gif    EncryptConfiguration();
InBlock.gif
InBlock.gif    Application.Run(
new MainForm());
InBlock.gif
ExpandedBlockEnd.gif}
运行程序后,打开配置文件可以看到,连接字符串已经变成密文了。最后注意一点:加密的字符串在被加载到内存的时候解密。














本文转自lihuijun51CTO博客,原文链接:http://blog.51cto.com/terrylee/67624  ,如需转载请自行联系原作者

相关文章
|
2月前
|
数据安全/隐私保护
使用加密工具类进行有效的字符串加密——CSDN博客
使用加密工具类进行有效的字符串加密——CSDN博客
17 0
|
2月前
|
数据安全/隐私保护
常用的字符串加密解密工具类
常用的字符串加密解密工具类
15 0
|
4月前
|
关系型数据库 MySQL 数据库
MySQL数据库-截取字符串
MySQL数据库-截取字符串
27 0
|
4月前
|
关系型数据库 MySQL 数据库
MySQL数据库-字符串位数不够前面补0
MySQL数据库-字符串位数不够前面补0
26 0
|
2月前
|
druid Java 数据库
druid+springboot加解密Druid链接池配置加密密码链接数据库
druid+springboot加解密Druid链接池配置加密密码链接数据库
79 0
|
9天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
11天前
|
监控 安全 算法
矢量数据库安全性:数据加密与访问控制
【4月更文挑战第30天】本文探讨了矢量数据库的安全性,聚焦数据加密和访问控制。数据加密,包括选择安全、高效的算法,字段级加密及传输加密,保护敏感信息。访问控制涉及用户认证、权限管理和审计监控,确保合法用户访问。安全性的提升需要持续投入,关注新技术和安全威胁,以适应不断变化的环境。
|
14天前
|
存储 Java 数据库
SpringBoot使用jasypt实现数据库配置加密
这样,你就成功地使用Jasypt实现了Spring Boot中的数据库配置加密,确保敏感信息在配置文件中以加密形式存储,并在应用启动时自动解密。
46 2
|
1月前
|
Java 数据库 数据安全/隐私保护
SpringBoot项目使用jasypt加解密的方法加密数据库密码
SpringBoot项目使用jasypt加解密的方法加密数据库密码
15 0
|
1月前
|
存储 安全 数据库
数据安全之认识数据库加密系统
信息安全的关键在于数据的安全,而数据的安全则主要通过数据加密技术来实现。随着网上购物等电子商务的兴起和繁荣,以数据库为代表的信息安全已成为很多企业的共识。越来越多的企业和机构开始重视数据库的数据安全问题,因为一旦数据泄露或遭到非法访问,将可能导致严重的经济损失和声誉损害。为了增强普通关系数据库管理系统的安全性,数据库加密系统应运而生。
22 0