Enterprise Library Step By Step系列(十三):加密应用程序块——入门篇

简介:
Enterprise Library Step By Step系列(十三):加密应用程序块——入门篇
作者: Terrylee
一.概述:
Enterprise Library Cryptography Application Block 简化了开发人员在其应用程序中集成加密功能的方式。应用程序可以使用应用程序块来执行各种任务,例如加密信息、从数据创建哈希,以及比较哈希值来检验数据是否被更改。
加密应用程序块具有以下功能:
它可以减少编写样本代码来执行标准任务的需要,从而提供了可用于解决常见应用程序加密问题的实现。
它有助于维护应用程序和整个企业中一致的加密做法。
利用涵盖提供的各种功能区域且一致的体系结构模型,从而使开发人员在学习过程中少走一些弯路。
它提供了可用于解决常见应用程序加密问题的实现。
它是可扩展的,并支持加密提供程序的其他实现。
开发人员经常编写一些需要加密和哈希功能的应用程序,以满足其组织的安全性要求。通常需要加密由应用程序创建和维护的数据以及配置信息。另外,还需要对用于访问应用程序功能或数据的密码进行哈希运算。
加密应用程序块通过将应用程序代码从特定的加密提供程序中抽象出来,从而简化了开发人员的工作。您可以通过更改配置来更改基础提供程序,而无需更改基础应用程序代码。它还可以封装与加密有关的常见难题(例如,加密和保留加密密钥)的最佳做法实现。
二.使用步骤向导
1 .使用配置工具为 Cryptography Application Block 创建配置
 
我们看到,创建一个 Cryptography Application Block 后,默认的有两个 Provider Hash Provider Sysmmetric Provider
2 .如果要创建一个 Hash 值,则右击 Hash Provider ,选择一种加密算法即可
 
对于创建 Hash 值,有一项需要配置,即可以选择时候加盐
 
3 .创建对称加密时,首先选择一种加密算法
 
我们需要创建一个密钥,单击 General 按钮,生成密钥
 
对于生成的密钥,可以导出保存
 
在导出密钥时,同样可以设置是否需要密码
 
4 .别忘了在项目中设置目录拷贝
1 None.gif copy  " $(ProjectDir)\*.config "   " $(TargetDir) "
5 .编写代码
加密数据
 1 ExpandedBlockStart.gif ///转换原字符串成字节数组
 2 None.gif byte [] valueToEncrypt  =  System.Text.Encoding.Unicode.GetBytes( this .inputForm.Input);
 3 None.gif                    
 4 ExpandedBlockStart.gif ///加密数据
 5 None.gif this .encryptedContents  =  Cryptographer.EncryptSymmetric(symmProvider, valueToEncrypt);
 6 None.gif                    
 7 ExpandedBlockStart.gif ///清空数组中的内容,很好的编程实践
 8 None.gif Array.Clear(valueToEncrypt,  0 , valueToEncrypt.Length);
 9 None.gif                    
10 ExpandedBlockStart.gif ///转换加密后的内容成可以显示的Base64String
11 None.gif string  encryptedText  =  Convert.ToBase64String( this .encryptedContents);
解密数据
1 ExpandedBlockStart.gif ///解密数据
2 None.gif byte [] decryptedContents  =  Cryptographer.DecryptSymmetric(symmProvider, this .encryptedContents);
3 None.gif                
4 ExpandedBlockStart.gif /// 获取字符串并显示
5 None.gif string  readableString  =  System.Text.Encoding.Unicode.GetString(decryptedContents);
6 None.gif                
7 ExpandedBlockStart.gif ///清空数组中的内容
8 None.gif Array.Clear(decryptedContents,  0 , decryptedContents.Length);
获取一个Hash
 1 ExpandedBlockStart.gif /// <summary>
 2InBlock.gif        /// 获取一个Hash值
 3InBlock.gif        /// </summary>
 4InBlock.gif        /// <param name="plainText"></param>
 5ExpandedBlockEnd.gif        /// <returns></returns>

 6 None.gif          private   byte [] GetHash( string  plainText)
 7 ExpandedBlockStart.gif         {
 8InBlock.gif            byte[] valueToHash = System.Text.Encoding.UTF8.GetBytes(plainText);
 9InBlock.gif                    
10InBlock.gif            byte[] generatedHash = Cryptographer.CreateHash(hashProvider, valueToHash);
11InBlock.gif                    
12ExpandedSubBlockStart.gif            /// 从内存中清空
13InBlock.gif            Array.Clear(valueToHash, 0, valueToHash.Length);    
14InBlock.gif      
15InBlock.gif            return generatedHash;     
16ExpandedBlockEnd.gif        }
比较Hash
 1 ExpandedBlockStart.gif /// <summary>
 2InBlock.gif        /// 比较Hash值
 3InBlock.gif        /// </summary>
 4InBlock.gif        /// <param name="plainText"></param>
 5InBlock.gif        /// <param name="existingHashValue"></param>
 6ExpandedBlockEnd.gif        /// <returns></returns>

 7 None.gif          private   bool  CompareHash( string  plainText,  byte [] existingHashValue)
 8 ExpandedBlockStart.gif         {
 9InBlock.gif             byte[] valueToHash = System.Text.Encoding.UTF8.GetBytes(plainText);
10InBlock.gif      
11InBlock.gif             bool matched = Cryptographer.CompareHash(hashProvider, valueToHash, existingHashValue);
12InBlock.gif                    
13ExpandedSubBlockStart.gif             /// 从内存中清空
14InBlock.gif             Array.Clear(valueToHash, 0, valueToHash.Length);    
15InBlock.gif      
16InBlock.gif             return matched;     
17ExpandedBlockEnd.gif        }
总结
Cryptography Application Block 应用程序块相对来说使用比较简单,有关加密和安全的更多知识,请大家多参考密码学方面的文章,这里就不详细介绍了。












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

相关文章
|
3月前
|
移动开发 JavaScript 安全
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
38 0
|
3月前
|
算法 安全 物联网
全面了解AES加密:入门指南(二)
全面了解AES加密:入门指南
|
2月前
|
数据安全/隐私保护 Python Windows
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)
47 0
|
3月前
|
存储 安全 算法
全面了解AES加密:入门指南(一)
全面了解AES加密:入门指南
|
3月前
|
数据安全/隐私保护 Python
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)(下)
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)
34 1
|
3月前
|
数据安全/隐私保护 Python Windows
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)(上)
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)
56 0
|
4月前
|
JavaScript 安全 开发工具
​Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
简介在 Vue 应用程序的开发中,代码压缩、加密和混淆是优化应用程序性能和提高安全性的重要步骤。 Vue CLI 是一个功能强大的开发工具,它提供了方便的配置选项来实现这些功能。本文将介绍如何使用 Vue CLI 配置代码压缩、加密和混淆功能,以提高应用程序的性能和安全性。
|
5月前
|
开发工具 数据安全/隐私保护 git
【Devchat 插件】创建一个GUI应用程序,使用Python进行加密和解密
【Devchat 插件】创建一个GUI应用程序,使用Python进行加密和解密
76 0
|
11月前
|
Go 数据安全/隐私保护
Go实现aes加密,并带你手撸一个命令行应用程序
Go实现aes加密,并带你手撸一个命令行应用程序
130 0
|
算法 Go 数据安全/隐私保护
Go 语言入门很简单:AES 加密和解密
Advanced Encryption Standard, AES 又名 Rijndael 是 NIST 于 2001 年创建的一种加密算法。它使用 128 位数据块进行加密,是一种对称块密码。在这篇文章中,我们将在 Go 中使用 AES 加密和解密数据。
Go 语言入门很简单:AES 加密和解密