- 浏览: 473899 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1028)
- [发布至博客园首页] (826)
- [随笔分类]个人生活随笔 (14)
- [网站分类]首页候选区 (26)
- [网站分类]SharePoint (15)
- [网站分类]其他技术区 (6)
- [随笔分类]批处理技巧 (6)
- [随笔分类].net 2.0 (3)
- [随笔分类]SharePoint2007(MOSS2007) (0)
- [网站分类].NET新手区 (6)
- [网站分类]ASP.NET (6)
- [网站分类]架构设计 (18)
- [网站分类]程序人生 (2)
- [网站分类]SQL Server (2)
- WCF (3)
- 编程技巧 (2)
- 模式架构 (2)
- 分析设计 (4)
- 生活随笔 (0)
- 软件工程 (1)
- Android实例 (2)
最新评论
-
zilong0536:
楼主您好:
请问发表博文支持图片的功能怎么实现啊,一直没有思路 ...
新浪微博开放平台开发-android客户端(3) -
nicegege:
小弟 学习了
帮助中国移动设计10086的排队小模块 -
zl7824516:
用什么技术没说啊
通告(公告),消息(站内短信),提醒的设计:通告 -
virusswb:
源码下载: SinaWeibo2 源码下载之后,将后缀改为ra ...
新浪微博开放平台开发-android客户端(3) -
Jimmyxu0311:
找不到源码下载
新浪微博开放平台开发-android客户端(3)
加密解密模块可以满足常用的对称加解密和hash功能要求。在应用中加入模块,需要下面的步骤:
1)添加对模块的程序集引用。添加对程序集Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.dll的引用。
2)添加对程序集Microsoft.Practices.ObjectBuilder2.dll和Microsoft.Practices.EnterpriseLibrary.Common.dll的引用。
3)在需要模块功能的文件中引入命名空间
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
4)在代码中使用模块提供的功能
典型的功能
1、使用对称加密算法加密数据
1.1加密结果是string形式
//Encrypt the Sensitive Data String
string encryptedContentBase64=Cryptographer .EncryptSymmetric ("symmProvider","password");
1.2加密结果是bytep[]形式
byte[]valueToEncrypt=System.Text.Encoding .Unicode .GetBytes ("passowrd");
byte []encryptedContents=Cryptographer .EncryptSymmetric ("symmProvider",valueToEncrypt );
1.3使用的时候有两点需要注意
- 确保symmProvider是在配置中存在的对称加解密算法,配置了适当的算法。
- 敏感数据应该及时从内存中清空。Array.Clear方法就是这个功能,在内存中保留敏感数据是很危险的。
2、使用对称加密算法解密数据
2.1解密字符串
string encryptedContentBase64=Cryptographer .EncryptSymmetric ("symmProvider","SensitiveData");
//Decrypt the base64 encoded string
string readableString=string.Empty ;
readableString =Cryptographer .DecryptSymmetric ("symmProvider",encryptedContentBase64 );
2.2解密字符数组
byte[]valueToEncrypt=System.Text.Encoding .Unicode .GetBytes ("passowrd");
byte []encryptedContents=Cryptographer .EncryptSymmetric ("summProvider",valueToEncrypt );
byte[]decryptContents=Cryptographer .DecryptSymmetric ("symmProvider",encryptedContentBase64 );
string plainText=(new System.Text.UnicodeEncoding ()).GetString (decryptContents );
2.3需要注意的地方
确保在配置文件中配置了正确的算法provider。
3、获取数据的hash值
3.1获取hash值
byte []valutHash=(new System.Text.UnicodeEncoding ()).GetBytes ("password");
byte[]generatedHash=Cryptographer .CreateHash ("hashProvider",valutHash );
Array .Clear (generatedHash ,0,generatedHash.Length );
3.2注意的地方
- CreateHash方法有两个重载,区别就是方法的返回值一个是string,一个是byte[]。
- 确保在配置中配置了相应的hash provider
- 及时清空敏感数据,在内存中保留敏感数据是很危险的。你应该知道,内存中的值可以被写回硬盘,因为操作系统会将数据写到交换文件中。如果系统崩溃,系统有可能将内存中的数据丢到硬盘上。
4、检查hash值和文本是否匹配
byte []valutHash=(new System.Text.UnicodeEncoding ()).GetBytes ("password");
byte[]generatedHash=Cryptographer .CreateHash ("hashProvider",valutHash );
byte []stringToCompare=(new System.Text.UnicodeEncoding ()).GetBytes ("TestValue");
bool comparisionSuccessed=Cryptographer .CompareHash ("hashProvider",stringToCompare ,generatedHash );
需要注意的是,一定要确保配置了适当的hash provider。
扩展和修改加解密模块
一、创建一个自定义的hash 算法provider
1、创建一个类
2、子文件中添加引用
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration;
3、让类实现IHashProvider接口
4、添加ConfigurationElementType特性,添加CustomHashProviderData作为特性的参数。
5、添加构造函数,参数是NameValueCollection类型
6、实现接口的两个方法
using System.Collections.Generic;
using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration;
namespace BeautyCode.ConApp
{
[ConfigurationElementType (typeof (CustomHashProviderData ))]
public class MyHashProvider:IHashProvider
{
public MyHashProvider (System.Collections.Specialized.NameValueCollection attributes)
{
}
public byte[] CreateHash(byte[] plaintext)
{
throw new NotImplementedException();
}
public bool CompareHash(byte[] plaintext, byte[] hashedtext)
{
throw new NotImplementedException();
}
}
}
二、创建一个自定义的对称加解密算法
2.1添加一个类文件
2.2添加引用
using System;
using System.Collections.Generic;
using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration;
2.3实现接口ISymmetricCryptoProvider
2.4添加ConfigurationElementType特性,参数是CustomSymmetricCryptoProviderData类型
2.5添加构造函数,参数是NameValueCollection类型
2.6实现接口的Encrypt和Decrypt方法
using System.Collections.Generic;
using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography;
using Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration;
namespace BeautyCode.ConApp
{
[ConfigurationElementType (typeof (CustomSymmetricCryptoProviderData ))]
public class MySymmetricCryptoProvider:ISymmetricCryptoProvider
{
public MySymmetricCryptoProvider (System.Collections.Specialized.NameValueCollection attributes)
{}
public byte[] Encrypt(byte[] plaintext)
{
throw new NotImplementedException();
}
public byte[] Decrypt(byte[] ciphertext)
{
throw new NotImplementedException();
}
}
}
未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
发表评论
-
NET 应用架构指导 V2 学习笔记(十六) 服务层设计指导
2010-06-04 00:13 524如果你的应用是通 ... -
NET 应用架构指导 V2 学习笔记(十七) 组件设计指导
2010-06-05 00:48 624组件提供了一种将 ... -
NET 应用架构指导 V2 学习笔记(十八) 表现层组件设计指导
2010-06-05 21:09 490本章讲述的是你在设计用户界面组件和表现层逻辑组件的时候应该 ... -
NET 应用架构指导 V2 学习笔记(十九) 表现层组件设计指导
2010-06-06 06:15 5545 决定数据绑定的 ... -
NET 应用架构指导 V2 学习笔记(二十) 业务组件设计指导
2010-06-07 06:58 578前言 业务组件 ... -
微软企业库5.0学习笔记(四十二)异常处理模块
2010-06-14 00:04 803企业库的异常处理 ... -
关于程序员在30岁、35岁之后怎么办的新思考
2010-06-14 10:40 593首先给大家问个好 ... -
NET 应用架构指导 V2 学习笔记(二十四) 跨层关注问题
2010-06-17 20:00 549概况 大部分的 ... -
微软企业库5.0学习笔记(四十三)数据验证模块
2010-06-19 08:07 961概况 任何接受用户或者是其他系统输入的应用,一定要确保 ... -
关于项目进度慢的思考----如何提高整体开发效率
2010-06-21 23:42 770我们都是软件行业 ... -
微软企业库5.0学习笔记(四十四)实战数据验证模块
2010-06-23 19:22 7941 在业务对象上添加验证 添加对程序集【Microso ... -
微软企业库5.0学习笔记(四十五)实战数据验证模块----高级篇
2010-06-24 19:41 9421、添加自定义的提示信息 验证失败的提示信息可以自定义 ... -
面向对象类设计的五大原则(一)单一职责原则Single Responsibility Principle
2010-06-29 15:45 733引言 面向对象类设计,或者说是面向对象设计,有五大原则 ... -
《深入浅出设计模式-中文版》读书笔记 开篇乱弹(一)
2010-07-01 06:42 620oreilly的《Head.First ... -
《深入浅出设计模式-中文版》读书笔记-继承与组合(三)
2010-07-03 16:53 576经过上一次的改造 ... -
《深入浅出设计模式-中文版》读书笔记-观察者模式(四)
2010-07-06 06:34 599今天要接触的是观 ... -
利用attribute实现简单的ORM
2010-07-09 15:27 644我不知道NH的ORM具 ... -
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
2010-07-14 13:02 788题外话 最近已经在努力学习了,学习基本功,学习设计模式 ... -
《深入浅出设计模式-中文版》读书笔记-工厂模式(五)
2010-07-16 12:46 668今天给大家带来的是:工厂模式。 我们在代码中创建一个对 ... -
Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(一)
2010-07-18 21:47 636题外话 又是一本Head.First系列的书,这个系列 ...
相关推荐
3 - Enterprise Library 的设计 (100%, 移植中) 4 - 部署 Enterprise Library (100%, 移植中) 5 - 扩展 Enterprise Library (0%) 6 - 与 Enterprise Library 一起使用组策略和 WMI (0%) 7 - 缓存应用程序块 (100...
2017Andrew NG Deeplearning Coursera深度学习笔记v4.1
Framework 3.5 开发一套企业库,目前最新版本为 v4.1,共包括 9 个 Application Block,包括 数据访问(Data Access Application Block)、异常管理(Exception Handling Application Block)、 数据验证...
Microsoft Enterprise Library 4.1(企业库)验证模块,Enterprise Library 4.1中文帮助文档,各种验证方法、参数说明。
DMA/Bridge Subsystem for PCI Express v4.1 读书笔记 (中文) XDMA 参考文档:PG195, https://github.com/Xilinx/dma_ip_drivers, https://support.xilinx.com/s/article/65443?language=en_US XDMA IP核的中文...
Enterprise Library4.1安装包下载
MVC3+EF4.1学习系列(一)创建EF4.1_code_first
Coursera深度学习笔记v4.1.rar。学习交流使用,勿做商业用途!
最新版 Enterprise Library 企业库 V4.1 中文学习手册
NULL 博文链接:https://ghl116.iteye.com/blog/1184028
Java课程所有学习笔记4.1.md
CISCO ACS 4.1搭建笔记总结:自己总结,自己安装,自己做笔记!希望能帮助大家!
netty案例,netty4.1中级拓展篇十三《Netty基于SSL实现信息传输过程中双向加密验证》源码 ...
最新版 Enterprise Library 企业库 V4.1 中文学习手册,与最新版的ELB5.0基本一样,ELB5.0只是代码的重写。
Enterprise Library 企业库 V4.1 中文学习手册与前面上传的part1是一起的,可用于ELB5.0 的学习