黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)
本章介绍的是企业库加密应用程序模块Cryptographyproviders中为对称加密配置Key文件的3种方式:
- create a new key : 使用一串字符串作为Key,然后通过加密保存到一个Key文件中.
- use an existing DPAPI-protected key file : 使用一个现有的Key文件进行配置.
- import a password-protected key file : 对导出的Key文件再进行一次Password加密.
废话少说,现在就开始看看如何使用它们吧:
一. Create a new key
1.运行EntLibConfig.exe,选择Blocks菜单 ,单击 Add CryptographySettings .
2.点击symmetriccryptography provider 区块右上角的加号按钮,然后点击 Add Symmetric Cryptography Providers,在弹出的加密算法中任意选择一个:
3.在弹出的Key文件生成方案中,我们选择第一个Create a new key,点击Next:
4.下一步是要你输入Key码,你可以自己手动输入一串自己定制好的Key码,也可以点击右下角的Generate按钮,让计算机为你自动生成一串Key码,在此我是直接点击Generate按钮生成的Key码,然后点击Next:
5.接着是选择Key文件导出的目录,这里我先保存成桌面的test.key文件,设置好后点击Next:
6.接着是选择模式,有User模式和Machine模式:
()User模式:每个应用程序有自己的唯一标识,无法访问其他应用程序的资源.
()Machine模式:加密的文件只能使用在本电脑上使用,也就是说用这个模式,在其他电脑你还需要重新生成一个Key文件.
在本地调试哪个模式都无所谓,我们就选择User模式吧:
7.再点击Finish,就完成配置啦:
桌面导出的Key文件:
8.点击 File 菜单,单击 Save,保存为一个App.config文件,可以先保存到桌面,之后要用到它. 用记事本打开App.config,可以看到如下内容:
<configSections>
<section name="securityCryptographyConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>
</configSections>
<securityCryptographyConfiguration>
<symmetricCryptoProviders>
<add name="RC2CryptoServiceProvider" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.SymmetricAlgorithmProvider,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35"
algorithmType="System.Security.Cryptography.RC2CryptoServiceProvider,mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
protectedKeyFilename="C:\Users\Administrator\Desktop\test.key"
protectedKeyProtectionScope="CurrentUser"/>
</symmetricCryptoProviders>
</securityCryptographyConfiguration>
</configuration>
9.要使用缓存应用程序模块, 需要导入相应的Dll文件,在此我们要导入的是Microsoft.Practices.EnterpriseLibrary.Caching.dll ,将App.config文件添加到项目中,并添加Microsoft.Practices.EnterpriseLibrary.Security.Cryptography引用:
添加引用:
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
10.测试:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;namespace test{ class Program { staticvoid Main(string[] args) { string Encrypt = Cryptographer.EncryptSymmetric("RC2CryptoServiceProvider", "HuangCong"); Console.WriteLine("密文:"+ Encrypt); Console.WriteLine("------------------------------------------------"); Encrypt = Cryptographer.DecryptSymmetric("RC2CryptoServiceProvider", Encrypt); Console.WriteLine("原文:"+ Encrypt); } }}
11.运行结果:
二. use an existingDPAPI-protected key file:
- 为了不混淆之前的实验,我们先将原来的策略删除,恢复到最初的状态:
- 点击symmetric cryptography provider 区块右上角的加号按钮,然后点击 Add Symmetric Cryptography Providers,在弹出的加密算法中我们需要选择和之前一样的加密方法,因为你之前导出的Key文件只针对该算法而导出的:
- 又到了Key文件生成方案中,我们选择第二个Use an existing DPAPI-protected key file,点击Next:
- 接着就会要我们选择一个已经存在的Key文件作为本策略的Key文件,我们就选择之前刚刚创建好的test.key文件吧:
- 接着是选择模式,以前讲过,就不重复了,点击Finish完成配置.
6.点击 File 菜单,单击 Save更新原有的App.config文件,打开可看到以下内容.
<configSections>
<section name="securityCryptographyConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>
</configSections>
<securityCryptographyConfiguration>
<symmetricCryptoProviders>
<add name="RC2CryptoServiceProvider" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.SymmetricAlgorithmProvider,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35"
algorithmType="System.Security.Cryptography.RC2CryptoServiceProvider,mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
protectedKeyFilename="C:\Users\Administrator\Desktop\test.key"
protectedKeyProtectionScope="CurrentUser"/>
</symmetricCryptoProviders>
</securityCryptographyConfiguration>
</configuration>
- 测试:
- 运行结果:
三. Import a password-protected key file
- 为了完成该实验,我们要先导出一个用Password加密过的key文件,则我们可以在刚才的策略工具栏上右键,选择Export Key:
- 接着设置的是对Key文件加密的密码和密码保存文件存放目录,在此我设置的密码是123456,存放目录为桌面的test.txt文件:
- 点击OK,就可以在桌面看到导出的密码保存文件啦:
- 为了不混淆之前的实验,我们先将原来的策略删除,恢复到最初的状态:
- 点击symmetric cryptography provider 区块右上角的加号按钮,然后点击 Add Symmetric Cryptography Providers,在弹出的加密算法中任意选择一个,为了做区分,我们仍然要选择原来的加密方法:
- Key文件生成方案中,我们选择第三个Import a password-protected key file,点击Next:
- 接着程序要你提供密码保存文件和密码,在这里我们可以导入桌面的test.txt文件,密码输入123456,接着点击Next:
- 接着选择新导出的key文件的存放目录,这里我们保存它成桌面的test1.key文件,点击Next:
- 接着是选择模式,以前讲过,就不重复了,点击Finish完成配置.
10. 点击 File 菜单,单击 Save更新原有的App.config文件,打开可看到以下内容:
<configSections>
<section name="securityCryptographyConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>
</configSections>
<securityCryptographyConfiguration>
<symmetricCryptoProviders>
<add name="RC2CryptoServiceProvider" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.SymmetricAlgorithmProvider,Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35"
algorithmType="System.Security.Cryptography.RC2CryptoServiceProvider,mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
protectedKeyFilename="C:\Users\Administrator\Desktop\test1.key"
protectedKeyProtectionScope="CurrentUser"/>
</symmetricCryptoProviders>
</securityCryptographyConfiguration>
</configuration>
- 测试:
- 运行结果:
黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)的更多相关文章
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级) 企业库加密应用程序模块提供了2种方 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (高级) 企业库验证应用程序模块之配置文件模式: ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级) Caching Application Bl ...
- 转:Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (高级)
http://www.360doc.com/content/13/0918/22/15643_315482318.shtml http://www.360doc.com/content/13/0918 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block 开发人员经常编写需要安全功能的应用程序.这些应用程序 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图: 从上图我们可以 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级) 企业库提供了一个很强大的验证应用程序模 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级) 本篇文章具体官方解释请参照以下链接: h ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(十) Configuration Application Block 到目前为止,我们使用的模块都是在同一个配置 ...
随机推荐
- 攻略三战的完美体验3Castle Fantisia阿兰·梅希亚战争艾伦西战记它包含重做版本(这是新的艾伦·梅希亚大战)
(城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一个游戏日文名:タイトル キャッスルファンタジア -エレンシア戦記-リニュー ...
- 利用开源HTML5引擎lufylegend.js结合javascript实现的五子棋人机对弈
前言 本文主要介绍利用开源引擎 lufylegend.js开发基于Html5的游戏--五子棋,主要叙述其详细开发过程. 游戏规则 玩过五子棋的都应该知道五子棋的规则,这里就简单介绍其规则. 1 ...
- ASP.NET 应用程序(Application)生命周期概述
原文:ASP.NET 应用程序(Application)生命周期概述 引用MSDN:ASP.NET 应用程序生命周期概述 本 主题概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程 ...
- 使用Boost库中的组件进行C++内存管理
C++标准库中的auto_ptr,智能指针,部分的解决了获取资源自动释放的问题 在Boost中,提供了6中智能指针:scoped_ptr, scoped_array, shared_ptr, shar ...
- 新发现IM项目Rabbitim(使用msys或者cygwin编译安装),FileZilla(wxWidget开发)
https://github.com/KangLin/rabbitim/blob/master/docs/INSTALL.md https://github.com/KangLin/rabbitim ...
- 玩转Windows服务系列——创建Windows服务
原文:玩转Windows服务系列——创建Windows服务 创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Wi ...
- remove()和直接使用system的一个差别
1.事出有因 今天在做一个从web页面中得到POST回应数据的时候.须要把暂时目录里面(包括子文件)内容清空.本来一直使用的是system("rmdir /s /q ..//tmp//dat ...
- 怎样在Ubuntu上安装最新版本号的Node.js
怎样在Ubuntu上安装最新版本号的Node.js 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Node.js是一个软件平台,通经常使用于构建大规模的 ...
- android怎样查看当前project哪些profile是打开的
代码project里面有三仅仅文件都是涉及到各个profile的宏的,各自是:featureoption.java.common/ProjectConfig.mk.product/ProjectCon ...
- JavaScript 中的继承(读书笔记思维导图)
继承是 OO 语言中的一个最为人津津乐道的概念.许多 OO 语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.由于函数没有签名,在 ECMAScript ...