Enterprise Library 2.0 Hands On Lab 翻译(3):数据访问程序块(三)

简介:
练习3:加密数据库连接信息
通过该练习,你将学会如何去加密数据库连接信息。
 
第一步
打开DataEx3.sln项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Data Access\exercises\ex03\begin,并编译。
 
第二步 加密数据库连接字符串
1 .在Enterprise Library1.1中加密连接字符串,需要依赖于Cryptography Application Block.NET Framework2.0中已经内置了这项功能,通过Configuration命名空间下的一些类来完成,支持两种类型的加密:
DPAPIProtectedConfigurationProvider :使用Windows Data Protection API (DPAPI)
RsaProtectedConfigurationProvider :使用RSA算法
2 .选择ProductMaintenance项目,选择Project | Add Reference …菜单命令,在弹出的对话框中选择.NET页并添加如下程序集。
System.Configuration.dll
3 .在解决方案管理器中选择Program.cs文件,选择View | Code菜单命令,加入如下命名空间。
using  System.Configuration;
4 .在方法ProtectConfiguration中添加如下代码。
static   void  ProtectConfiguration()

{

    
// TODO: Protect the Connection Strings

    
string provider = "RsaProtectedConfigurationProvider";

 

    Configuration config 
= null;

    config 
= ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

 

    ConfigurationSection section 
= config.ConnectionStrings;

 

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

        (section.ElementInformation.IsLocked 
== false))

    
{

        
// Protect (encrypt) the "connectionStrings" section.

        section.SectionInformation.ProtectSection(provider);

 

        
// Save the encrypted section.

        section.SectionInformation.ForceSave 
= true;

        config.Save(ConfigurationSaveMode.Full);

    }


}

 
第三步 运行应用程序
选择Debug | Start Without Debugging菜单命令并运行应用程序,注意该示例和练习2中的示例是一样的。在项目bin\Debug目录中打开ProductMaintenance.exe.config配置文件,注意到连接信息已经变成了密文。
<? 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 Instance"   />

  
< connectionStrings  configProtectionProvider ="RsaProtectedConfigurationProvider" >

    
< EncryptedData  Type ="http://www.w3.org/2001/04/xmlenc#Element"

      xmlns
="http://www.w3.org/2001/04/xmlenc#" >

      
< EncryptionMethod  Algorithm ="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"   />

      
< KeyInfo  xmlns ="http://www.w3.org/2000/09/xmldsig#" >

        
< EncryptedKey  xmlns ="http://www.w3.org/2001/04/xmlenc#" >

          
< EncryptionMethod  Algorithm ="http://www.w3.org/2001/04/xmlenc#rsa-1_5"   />

          
< KeyInfo  xmlns ="http://www.w3.org/2000/09/xmldsig#" >

            
< KeyName > Rsa Key </ KeyName >

          
</ KeyInfo >

          
< CipherData >

            
< CipherValue > xeuEp2HB0xd87DFM0p5UwO78QjRW6A/pb6kGJpS5Rl0F0jHAEPh8wz4Jroc1+/I7nvmsCo6a8wzju4Nyd5ZGF6KRZgx56P9wRgkUFtJPgDROrz1ASRSIrOfMjw4+1uedT+pl+IuF1EWgEH9Vb+/8A9xmbYWtMBAcR/f/quSC1nQ= </ CipherValue >

          
</ CipherData >

        
</ EncryptedKey >

      
</ KeyInfo >

      
< CipherData >

        
< CipherValue > DrwCnj8uCmkWOjLc2waTGX2pf8QKRFpegQbFv0zcVAwcCkZRvUVnIj9kXCLiIx+Pcbrz6H/fccbWxybAA+V7A4unJvDXegyZR1+dW7UqfDOAagTW67FC6iI3vatOpGCw30W+xpwhfgptCoFRNiCMWqxvpv++pywSK5SNfB7UZwpl90Q9dBHmmCIVyi/ZbS5JY2FLN68nRd9CHZmZLHv9opBm4DvMVdAXt7oKQ6tk9k4HJZzpUc1V8pWLQn7NQroA/4WpUDGGgk1gJ2HTBkP2L6wATzxTfQDgZbW/JIgrdollAQbO3/UEAvAnc0swoL/6BhWS5MW/9PxjuQK6GhsnSr4Dg7SEdsFPO2bTsAP/lAUeY5y9M3UxC1Q32IwMt8O4gz5ppNgYY7R8yKmvH7/S80/i61qJXvSJEQ/hQjx8V2R9okuBaN4XVgLUysmFWsOwxxHiGFyuSOECDWnr1c/5XwM7O85gVTzMELdM+N1jVFQTADXQmckOY1nZllRd3cA9CB1Qruqn/RxbGOFHT1F6y/4Cbfk7x1CKsmHx0iI0WNJ5iD3KYEq5kosGwWxrOI8C28BiXfEztwCzruSP6JpMbw== </ CipherValue >

      
</ CipherData >

    
</ EncryptedData >

  
</ connectionStrings >

</ configuration >

注意根据 Hands On Lab给出的时间建议,做完以上三个练习的时间应该为 30分钟。

更多Enterprise Library的文章请参考《Enterprise Library系列文章
















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


相关文章
Unable to interpret the implicit parameter configuration with dataType: , dataTypeClass: class java.
Unable to interpret the implicit parameter configuration with dataType: , dataTypeClass: class java.
829 0
|
6月前
|
机器学习/深度学习 自然语言处理 搜索推荐
Multi-Agent
基于Multi-Agent架构的智能导购助手,通过多个智能代理的协同工作,实现了顾客需求收集、商品匹配、个性化推荐及自动化交易的全流程自动化。该系统利用自然语言处理、机器学习、大数据等技术,显著提升顾客购物体验和商家运营效率,具有广泛的商业应用前景。
|
7月前
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
134 1
|
8月前
|
安全 数据安全/隐私保护 UED
优化用户体验:前后端分离架构下Python WebSocket实时通信的性能考量
在当今互联网技术的迅猛发展中,前后端分离架构已然成为主流趋势,它不仅提升了开发效率,也优化了用户体验。然而,在这种架构模式下,如何实现高效的实时通信,特别是利用WebSocket协议,成为了提升用户体验的关键。本文将探讨在前后端分离架构中,使用Python进行WebSocket实时通信时的性能考量,以及与传统轮询方式的比较。
164 2
|
9月前
|
存储 JavaScript 前端开发
JavaScript变量声明:深入理解与最佳实践
JavaScript变量声明:深入理解与最佳实践
|
10月前
|
人工智能 搜索推荐 算法
啥是AI,认识身边的AI
人工智能,或AI,悄然融入我们的日常生活,成为不可或缺的一部分。在智能手机中,语音助手如Siri、小爱同学等,不仅帮我们完成日常操作,还能提供陪伴。AI还化身时尚摄影师,美化我们的照片;通过个性化推荐,在各类应用中呈现我们感兴趣的内容。智能家居中,智能音箱控制家电,安全摄像头守卫家庭,智能冰箱推荐健康食谱。在线上,AI优化购物体验,定制化信息流让我们享受个性化社交。在医疗领域,AI辅助诊断疾病,智能手环监测健康。出行时,AI规划最佳路线,自动驾驶预示未来。教育娱乐方面,AI定制学习计划,创造沉浸式游戏体验。AI已成为我们贴心的生活助手。
|
人工智能 自然语言处理
150B token从头训练,普林斯顿Meta发布完全可微MoE架构Lory
【5月更文挑战第27天】普林斯顿Meta团队推出Lory,这是一种完全可微的MoE语言模型架构,用于解决大模型的效率问题。Lory采用因果分段路由和相似性批处理,提高专家合并效率并促进专业化。在150B token的预训练后,Lory在困惑度和下游任务上优于密集模型,显示了可微MoE架构的潜力。不过,Lory仍有优化空间,包括专家选择策略、计算效率和实际应用验证。[论文链接](https://arxiv.org/abs/2405.03133)
173 1
|
运维 Linux Shell
Ansible的介绍与安装
**自动化与Linux系统管理**\n\n学习自动化运维能减少手动任务的错误和遗漏,提高效率。Ansible是一款Python开发的自动化工具,支持多平台,实现批量配置、部署和命令执行。它是无代理的,通过SSH连接管理主机,无需在远程主机安装额外软件。\n\nAnsible具有跨平台、人类可读的自动化语言、描述应用状态、易版本控制、动态清单管理和与其他系统集成等优点。\n\nAnsible的工作流程包括ad-hoc和playbook模式。安装涉及配置YUM源、EPEL源,然后通过yum或dnf安装软件包。在无网络环境下,可以下载rpm包离线安装。
|
数据挖掘 Linux 程序员
手把手教你---猿如意之八大高效利器使用(一)
手把手教你---猿如意之八大高效利器使用
720 0
手把手教你---猿如意之八大高效利器使用(一)
|
SQL 关系型数据库 Java
PostgreSQL统计信息的几个重要视图
PostgreSQL统计信息的几个重要视图
419 1