Share via


.NET Framework 密碼編譯模型

更新:2010 年 7 月

.NET Framework 提供許多標準密碼編譯演算法的實作。 這些演算法易於使用,並有可能是最安全的預設屬性。 此外,物件繼承、資料流設計和組態的 .NET Framework 密碼編譯模型可極度延伸擴展。

物件繼承

.NET Framework 安全系統實作可延伸的衍生類別繼承模式。 繼承如下所述:

利用這種衍生類別模式,很容易就可加入新的演算法或現有演算法的新實作。 例如,若要建立新的公開金鑰演算法,您將會繼承自 AsymmetricAlgorithm 類別。 若要建立特定演算法的新實作,您將要建立那種演算法的非抽象衍生類別。

如何在 .NET Framework 中實作演算法

請考慮對稱演算法,做為演算法可使用之不同實作的範例。 所有對稱演算法的基底是 SymmetricAlgorithm,它會由下列演算法繼承:

  1. Aes

  2. DES

  3. RC2

  4. Rijndael

  5. TripleDES

Aes 會由兩個類別繼承:AesCryptoServiceProviderAesManagedAesCryptoServiceProvider 類別是有關 AES 之 Windows 密碼編譯 API (CAPI) 實作的包裝函式,而 AesManaged 類別完全是以 Managed 程式碼撰寫。 除了 Managed 和 CAPI 實作之外,還有第三種類型的實作 Cryptography Next Generation (CNG)。 CNG 演算法的範例為 ECDiffieHellmanCng。 Windows Vista 和更新版本中提供 CNG 演算法。

您可以選擇最適合您的實作。 Managed 實作會在所有支援 .NET Framework 的平台上提供。 CAPI 實作會在舊版作業系統上提供,而且已不再開發。 CNG 是非常新穎的實作,其中將進行新的開發工作。 不過,Managed 實作並未通過聯邦資訊處理標準 (FIPS) 的認證,因此速度可能比包裝函式類別慢。

資料流設計

Common Language Runtime 使用資料流導向設計來實作對稱演算法和雜湊演算法。 這個設計的核心是衍生自 Stream 類別的 CryptoStream 類別。 資料流架構的密碼編譯物件支援單一標準介面 (CryptoStream) 來處理物件的資料傳輸部分。 由於所有物件都建置在標準介面上,您可以將多個物件鏈結在一起 (例如雜湊物件其後跟著加密物件),並且您可以在資料上執行多項作業,而不需要任何中繼儲存區。 資料流 (Streaming) 模型還可讓您從較小的物件來建置物件。 例如,雖人這個物件可能是從一組資料流物件所建置起來的,但是結合的加密和雜湊演算法仍可視為單一資料流物件。

密碼編譯組態

密碼編譯組態可讓您將演算法的特定實作解析為演算法名稱,並允許 .NET Framework 加密類別的擴充性。 您可以為您的硬體或軟體加入演算法的實作,並將這種實作對應到您所選擇的演算法名稱。 如果組態檔中沒有指定演算法,則使用預設設定。 如需有關密碼編譯組態的詳細資訊,請參閱設定密碼編譯類別

選擇演算法

您可以基於各種不同的理由選取演算法:例如資料完整性、資料隱私權,或是為了產生金鑰。 對稱和雜湊演算法主要在於保護資料的完整性 (防止變更) 或隱私權 (防止檢視)。 雜湊演算法主要用於資料完整性。

以下清單依應用程式提供建議的演算法:

請參閱

概念

密碼編譯服務

密碼編譯服務

其他資源

密碼編譯工作

變更記錄

日期

記錄

原因

2010 年 7 月

已擴充主題。

資訊加強。