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.別忘了在項目中設置目錄拷貝
copy "$(ProjectDir)\*.config" "$(TargetDir)"5.編寫代碼
加密數據
///轉換原字符串成字節數組2
byte[] valueToEncrypt = System.Text.Encoding.Unicode.GetBytes(this.inputForm.Input);3
4
///加密數據5
this.encryptedContents = Cryptographer.EncryptSymmetric(symmProvider, valueToEncrypt);6
7
///清空數組中的內容,很好的編程實踐8
Array.Clear(valueToEncrypt, 0, valueToEncrypt.Length);9
10
///轉換加密后的內容成可以顯示的Base64String11
string encryptedText = Convert.ToBase64String(this.encryptedContents);解密數據
///解密數據2
byte[] decryptedContents = Cryptographer.DecryptSymmetric(symmProvider,this.encryptedContents);3
4
/// 獲取字符串并顯示5
string readableString = System.Text.Encoding.Unicode.GetString(decryptedContents);6
7
///清空數組中的內容8
Array.Clear(decryptedContents, 0, decryptedContents.Length);獲取一個Hash值
/// <summary>2
/// 獲取一個Hash值3
/// </summary>4
/// <param name="plainText"></param>5
/// <returns></returns>6
private byte[] GetHash(string plainText)7
{8
byte[] valueToHash = System.Text.Encoding.UTF8.GetBytes(plainText);9
10
byte[] generatedHash = Cryptographer.CreateHash(hashProvider, valueToHash);11
12
/// 從內存中清空13
Array.Clear(valueToHash, 0, valueToHash.Length); 14
15
return generatedHash; 16
}比較Hash值
/// <summary>2
/// 比較Hash值3
/// </summary>4
/// <param name="plainText"></param>5
/// <param name="existingHashValue"></param>6
/// <returns></returns>7
private bool CompareHash(string plainText, byte[] existingHashValue)8
{9
byte[] valueToHash = System.Text.Encoding.UTF8.GetBytes(plainText);10
11
bool matched = Cryptographer.CompareHash(hashProvider, valueToHash, existingHashValue);12
13
/// 從內存中清空14
Array.Clear(valueToHash, 0, valueToHash.Length); 15
16
return matched; 17
}總結
Cryptography Application Block應用程序塊相對來說使用比較簡單,有關加密和安全的更多知識,請大家多參考密碼學方面的文章,這里就不詳細介紹了。
Worktile,新一代簡單好用、體驗極致的團隊協同、項目管理工具,讓你和你的團隊隨時隨地一起工作。完全免費,現在就去了解一下吧。
https://worktile.com



浙公網安備 33010602011771號