程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Enterprise Library Step By Step系列(十三) 加密應用程序塊 - 入門篇

Enterprise Library Step By Step系列(十三) 加密應用程序塊 - 入門篇

編輯:關於.NET

一.概述: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.別忘了在項目中設置目錄拷貝

1copy"$(ProjectDir)\*.config""$(TargetDir)"

5.編寫代碼

加密數據

1/**////轉換原字符串成字節數組
2byte[] valueToEncrypt = System.Text.Encoding.Unicode.GetBytes(this.inputForm.Input);
3
4/**////加密數據
5this.encryptedContents = Cryptographer.EncryptSymmetric(symmProvider, valueToEncrypt);
6
7/**////清空數組中的內容,很好的編程實踐
8Array.Clear(valueToEncrypt, 0, valueToEncrypt.Length);
9
10/**////轉換加密後的內容成可以顯示的Base64String
11string encryptedText = Convert.ToBase64String(this.encryptedContents);

解密數據

1/**////解密數據
2byte[] decryptedContents = Cryptographer.DecryptSymmetric(symmProvider,this.encryptedContents);
3
4/**//// 獲取字符串並顯示
5string readableString = System.Text.Encoding.Unicode.GetString(decryptedContents);
6
7/**////清空數組中的內容
8Array.Clear(decryptedContents, 0, decryptedContents.Length);

獲取一個Hash值

1/**//// <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值

1/**//// <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應用程序塊相對來說使用比較簡單,有關加密和安全的更多知識,請大家多參考密碼學方面的文章,這裡就不詳細介紹了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved