[EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...
? 在完成了后,今天開始介紹企業庫中的新模塊:Cryptographer(加密模塊),這個模塊在日常的大多數項目的作用非常重要,例如:網站會員密碼、身份證號、網站配置等,通過對信息進行加密可以保證項目數據的安全性。
今天主要介紹以下幾點:
1、企業庫Cryptographer(加密模塊)簡單分析。
2、實現一個自定義加密接口。
3、在項目中應用自定義接口。
?
第一點、企業庫Cryptographer(加密模塊)簡單分析
在我們日常開發中總會使用加密對數據進行加密,我們一般都會在項目中自定義一些加密方法,而企業庫就是為了簡便這些開發,提供了簡便的方式來進行數據加密解密。
和其他的模塊一樣,Cryptographer(加密模塊)也可以通過簡單的配置進行數據加密解密,具體有關配置方面的介紹可以看園子里huangcong所寫的文章,我就不多介紹了:
Cryptography Application Block (初級)
Cryptography Application Block (高級)
Cryptographer(加密模塊)主要提供2種加密方式:
1、HashCryptographer(離散加密),這種方法根據特定的算法對數據進行加密,此種加密無法被解密。
2、SymmetricCryptographer(對稱性加密),這種方法也是根據特定的算法對數據進行加密,但是數據加密后可以進行解密。
通過圖可以更好的理解,下圖引用自企業庫5.0文檔:
加密模塊中靜態類Cryptographer為核心,方便程序員根據配置對數據進行加密解密,其主要包含以下成員:
1、方法CreateHash,根據配置文件中所配置的離散配置名讀取配置對數據進行加密。
2、方法EncryptSymmetric,根據配置文件中所配置的對稱性配置名讀取配置對數據進行加密。
3、方法DecryptSymmetric,根據配置文件中所配置的對稱性配置名讀取配置對數據進行解密。
4、方法CompareHash,比較帶加密的數據和已加密的數據是否一致。
5、私有方法GetHashProvider、GetSymmetricCryptoProvider,根據配置文件名獲取離散加密、對稱加密實例。
在這個加密模塊中,靜態類Cryptographer為我們提供了根據配置名進行加密解密方式,同時還提供了一個抽象類CryptographyManager來實現自定義的加密解密管理器,在加密模塊中已經為我們提供了一個CryptographyManager的實現——CryptographyManagerImpl。
抽象類CryptographyManager本質上就是一個非靜態的Cryptography,其定義了4個抽象方法:
1、方法CreateHash。
2、方法EncryptSymmetric。
3、方法DecryptSymmetric。
4、方法CompareHash。
實現類CryptographyManagerImpl則主要實現了抽象類CryptographyManager,其主要信息如下:
1、字段IDictionary<string, IHashProvider> hashProviders,離散加密鍵值對集合,包含了多個離散加密實現。
2、字段IDictionary<string, ISymmetricCryptoProvider> symmetricCryptoProviders,對稱加密鍵值對集合,包含了多個對稱加密實現。
3、字段IDefaultCryptographyInstrumentationProvider instrumentationProvider,提供加密模塊出現錯誤報告
4、構造函數,一共有3個構造函數,接收泛型列表形式的離散加密實現、對稱加密實現以及
5、加密解密方法CreateHash、EncryptSymmetric、DecryptSymmetric,這3個方法接收3個參數:所配置的加密解密實例名、待加密數據和加密模塊的錯誤報告(IDefaultCryptographyInstrumentationProvider)。
其內部會根據實例名到hashProviders或symmetricCryptoProviders這2個列表中尋找相應的加密解密實現,然后調用實現進行加密解密。
?
?
在實際的項目開發的開發過程中,我們既可以通過靜態類Cryptographer簡單的完成對數據的加密解密,也可以通過實現抽象類CryptographyManager來編寫符合項目需求的加密解密管理器,總的來說企業庫的這個Cryptographer模塊已經為我們提供了很好的加密解密封裝,同時又提供了擴展接口在其基礎上可以進行進一步擴展,大大方便了我們的日常項目開發。
?
第二點:實現一個自定義加密接口
在第一點中,我簡單介紹了企業庫Cryptographer模塊的重要信息,現在我來介紹下企業庫Cryptographer模塊為我們提供的加密解密擴展接口。
上面說過,企業庫Cryptographer模塊提供了2種加密解密方式:
1、HashCryptographer(離散加密),這種方法根據特定的算法對數據進行加密,此種加密無法被解密。
2、SymmetricCryptographer(對稱性加密),這種方法也是根據特定的算法對數據進行加密,但是數據加密后可以進行解密。
這2種加密解密方式對應著2個接口:IHashProvider和ISymmetricCryptoProvider,分別看下這2個接口的代碼:
IHashProvider接口:
| 1 2 3 4 5 6 | public?interface?IHashProvider { ????byte[] CreateHash(byte[] plaintext); ????bool?CompareHash(byte[] plaintext, byte[] hashedtext); } |
這個接口只有2個方法:
1、方法CreateHash,接收傳入的待加密數據(字節數組)根據具體實現進行離散加密返回加密后的數據(字節數組)。
2、方法CompareHash,接收待加密數據(字節數組)和已經加密后的數據(字節數組),調用具體實現的離散加密方法將待加密數據進行加密然后與已加密數據進行比較,看其是否相等。
?
ISymmetricCryptoProvider接口:
| 1 2 3 4 5 6 | public?interface?ISymmetricCryptoProvider { ????byte[] Encrypt(byte[] plaintext); ????byte[] Decrypt(byte[] ciphertext); } |
這個接口也比較簡單,也只有2個方法:
1、方法Encrypt,接收待加密數據(字節數組),調用實現方法進行加密,返回加密后的數據(字節數組)。
2、方法Decrypt,接收已加密數據(字節數組),調用實現方法進行解密,返回解密后的數據(字節數組)。
而如果我們需要擴展自定的加密解密方法據需要從上面2個接口入手,根據需求判斷是要進行離散加密還是對稱性加密實現不同的接口。
?
以上就是今天所要介紹的企業庫Cryptographer模塊信息,主要介紹了Cryptographer模塊的常用類、加密解密管理器,同時簡單介紹了Cryptographer模塊的加密解密擴展接口。
在下一篇文章中我將繼續介紹如何實現自定義離散加密和對稱性加密方法,以及在項目中使用自定義的加密解密方法。
?
微軟企業庫5.0 學習之路系列文章索引:
第一步、基本入門
第二步、使用VS2010+Data Access模塊建立多數據庫項目
第三步、為項目加上異常處理(采用自定義擴展方式記錄到數據庫中)?
第四步、使用緩存提高網站的性能(EntLib Caching)
第五步、介紹EntLib.Validation模塊信息、驗證器的實現層級及內置的各種驗證器的使用方法——上篇
第五步、介紹EntLib.Validation模塊信息、驗證器的實現層級及內置的各種驗證器的使用方法——中篇?
第五步、介紹EntLib.Validation模塊信息、驗證器的實現層級及內置的各種驗證器的使用方法——下篇
第六步、使用Validation模塊進行服務器端數據驗證
第七步、Cryptographer加密模塊簡單分析、自定義加密接口及使用—上篇
第七步、Cryptographer加密模塊簡單分析、自定義加密接口及使用—下篇
第八步、使用Configuration Setting模塊等多種方式分類管理企業庫配置信息
第九步、使用PolicyInjection模塊進行AOP—PART1——基本使用介紹
第九步、使用PolicyInjection模塊進行AOP—PART2——自定義Matching Rule
第九步、使用PolicyInjection模塊進行AOP—PART3——內置Call Handler介紹
第九步、使用PolicyInjection模塊進行AOP—PART4——建立自定義Call Handler實現用戶操作日志記錄
第十步、使用Unity解耦你的系統—PART1——為什么要使用Unity?
第十步、使用Unity解耦你的系統—PART2——了解Unity的使用方法(1)
第十步、使用Unity解耦你的系統—PART2——了解Unity的使用方法(2)
第十步、使用Unity解耦你的系統—PART2——了解Unity的使用方法(3)
第十步、使用Unity解耦你的系統—PART3——依賴注入
第十步、使用Unity解耦你的系統—PART4——Unity&PIAB
擴展學習:
擴展學習篇、庫中的依賴關系注入(重構 Microsoft Enterprise Library)[轉]
本文轉自kyo-yo博客園博客,原文鏈接:http://www.cnblogs.com/kyo-yo/archive/2010/08/09/Learning-EntLib-Seventh-Introduce-Cryptographer-and-Expand.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的[EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中os与sys两模块的区别
- 下一篇: 46. Ext中namespace的作用