加解密模块使得开发者可以很容易的在应用中使用加解密的相关功能,例如,加密信息,创建一个数据的hash值,比较hash值,看看数据是否被修改。
模块具有下列功能:
- 减少实现标准功能的开发代码,加解密模块实现了常用的加解密功能。
- 在应用和跨企业之间提供一致的加解密策略。
- 降低了开发者为应用建立一致的加解密架构所需的学习曲线
- 是可扩展的,意味着它支持自定义加解密的provider
一、加解密模块简介
包括下列主题:
- 通用解决方案
- 示例代码
- 什么时候使用加解密模块
- Key的管理和分布
- 选择算法
1.1通用解决方案
开发者在开发的时候,经常需要加密数据和hash功能来满足企业组织的安全需要。应用创建数据和管理数据,也包括配置信息,通常需要加密。另外,访问系统需要的密码和其他信息也需要hash。
加解密模块通过提供抽象出来的加解密provider来简化开发者的工作,可以通过配置,再不修改代码的情况下改变provider。
模块只支持对称加密算法,对称加密算法使用相同的key加密和解密。模块不支持非对称(也就是公钥)加密解密,使用一个key加密信息,使用另外一个key解密信息。
加解密模块的设计满足了开发者在开发应用的时候这方面的常用需求,下面列出了一些常用的解决方案,以供参考:
- 配置信息加密
- 加密数据
- 解密数据
- 获取数据的hash值
- 检查hash值是否和数据匹配
1.2示例代码
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
//Encrypt the Sensitive Data String
string encryptedContentBase64=Cryptographer .EncryptSymmetric ("symmProvider",
"SensitiveData");
//Decrypt the base64 encoded string
string readableString=string.Empty ;
readableString =Cryptographer .DecryptSymmetric ("symmProvider",encryptedContentBase64 );
}
1.3什么时候使用加解密模块
在你需要hash数据,或者是对称加解密的时候,可以选择企业库的加解密模块。你也可以自定义加解密的provider。如果数据只需要加密,不需要解密,例如:密码。可以使用hash。如果数据需要加密和解密,那就选择对称加密算法。
使用对称加密的一个先决条件是发送数据的应用和接受数据的应用之间是可信任的。例如,发送方和接受方是同一个应用。这种限制通常会不适合一些需要网络传输数据的应用。在使用加解密模块的时候,有两点也需要考虑:
1)对称密钥的管理
2)选择hash值,还是选择对称加密算法
1.4管理和分布key
对称加密算法在加密和解密的时候使用同一个key,发送数据和接受数据的双方都必须要具有key。任何拿到这个key的应用也都可以加密和解密数据。这就意味着,如果攻击者获得key,就可以拿到加密的数据内容。攻击者也可以通过删除或者是破坏key,使得正常应用无法读取数据。一个key文件是一个加密文件,里面包括了加解密所需要的key。需要很小心的管理key,可以考虑下面的方式:
- 使用Access Control List (ACL访问控制列表)保护key,只有授权才可以访问key文件。
- 在高危环境关闭电脑的远程调试。例如,服务器的匿名访问。
加解密模块将每一个key文件存在在本地计算机,配置节<securityCryptographyConfiguraion>中包含了每个文件的绝对地址。为了保护key,在写入文件的时候使用了DPAPI加密了key信息。如果使用加解密,一定要保证路径地址也是加密值。例如,你可以将ACLs值包含在路径加密值中。如果应用需要其他硬件辅助的加密,需要修改模块的源代码来满足需求。
模块不完全解决key的分发问题。如果key只是在自己的安全的计算机上使用的话,很容易解决分发问题。但是,如果是在多个地方共享key,需要仔细的计划。一个办法是用企业库的配置工具,在你分发之前导出key文件。导出key的时候设置一个password。在另外的地方使用企业库配置工具导入key的时候需要输入密码。
1.5算法的选择
如果一个加解密算法被破解,或者算法是很容易被暴力破解的,加解密provider就不是安全的。自定义的算法在没有测试的时候是很容易被破解的。相反,使用公用的,著名的加密算法是经得起考验的。
如果计算能力增加的话,推荐增加key的长度。目前情况,加密key的长度在128-256位之间是较为安全的,目前大多算法至少都是128位。
hash算法中,推荐用SHA256算法,算法使用的hash大小是256位。SHA1 hash算法是16位的,这种算法是可以接受的,但是不够的。MD4和MD5不在推荐使用。
对称加密算法中,推荐使用AES,也叫做Rijndael。这个算法的key长度支持128、192、256位。DES算法不在推荐使用。
未完待续。。。。。。。。。。。。。。。。。。。。
分享到:
相关推荐
Microsoft Enterprise Library 4.1(企业库)是微软推出的一套可重用的应用程序框架,它旨在帮助开发人员更有效地实现常见的软件设计模式,特别是对于企业级应用。其中,验证模块是核心组件之一,主要负责数据输入的...
Framework 3.5 开发一套企业库,目前最新版本为 v4.1,共包括 9 个 Application Block,包括 数据访问(Data Access Application Block)、异常管理(Exception Handling Application Block)、 数据验证...
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 Library是微软 Patterns & Practices 团队开发的一个开源软件框架,主要用于简化企业级应用程序的开发。这个框架集合了多种常见的应用程序编程模式,为.NET开发者提供了一系列可重用的组件和服务,帮助...
NULL 博文链接:https://ghl116.iteye.com/blog/1184028
Coursera深度学习笔记v4.1.rar。学习交流使用,勿做商业用途!
Java课程所有学习笔记4.1.md
Enterprise Library 企业库 V4.1 中文学习手册与前面上传的part1是一起的,可用于ELB5.0 的学习
本项目“maven springMVC4.1+easyUI整合(多模块项目)”正是这样一个实践,它巧妙地结合了Maven、Spring MVC 4.1和EasyUI,为开发Web应用提供了一个高效且结构清晰的框架。 **Maven** 是一个项目管理工具,用于...
### CISCO ACS 4.1 搭建与配置详解 #### 一、AAA认证概述 AAA 认证体系在网络安全领域中起着至关重要的作用,它由三个关键部分组成:**Authentication(认证)、Authorization(授权)以及Accounting(记账)**。这...
AutoJs源码-加密解密(1)。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!。...
最新版 Enterprise Library 企业库 V4.1 中文学习手册,与最新版的ELB5.0基本一样,ELB5.0只是代码的重写。
Enterprise Library 是微软面向企业级应用开发的一套框架,它提供了许多可重用的软件组件,以简化常见的应用程序设计和开发任务。这套框架是基于.NET Framework构建的,旨在提高开发效率,增强代码的可维护性和可...
1. **OWL简介** OWL是一种用于描述和共享网络上的概念化知识的语言,它是RDF(Resource Description Framework)和RDFS(RDF Schema)的扩展,具有更丰富的表达力。OWL分为三个不同的词汇表或语言层次:OWL Lite、...
### 最新版 Enterprise Library 企业库 V4.1 中文学习手册知识点详解 #### 一、Enterprise Library 概述 **Enterprise Library**(企业库),是由 Microsoft 的 patterns & practices 团队专门为 .NET Framework ...
junit4.1junit4.1junit4.1junit4.1junit4.1