.NET Framework加密模型深入剖析
.NET Framework加密模型在我們的代碼編寫中值得開發(fā)人員重視。因?yàn)檫@宗模型的實(shí)現(xiàn)可以幫助我們提高程序的安全性。.NET Framework 提供許多標(biāo)準(zhǔn)加密算法的實(shí)現(xiàn)。這些算法易于使用并具有最安全的可能默認(rèn)屬性。此外,對(duì)象繼承、流設(shè)計(jì)和配置的 .NET Framework 加密模型具有高度的可擴(kuò)展性。#t#
.NET Framework加密模型之對(duì)象繼承
.NET Framework 安全系統(tǒng)實(shí)現(xiàn)可擴(kuò)展模式的派生類繼承。層次結(jié)構(gòu)如下所示:
算法類型類,如 SymmetricAlgorithm 或 HashAlgorithm。該級(jí)別為抽象。
從算法類型類繼承的算法類,如 RC2 或 SHA1。該級(jí)別為抽象。
從算法類繼承的算法類的實(shí)現(xiàn),如 RC2CryptoServiceProvider 或 SHA1Managed。該級(jí)別是完全實(shí)現(xiàn)的。
使用這種模式的派生類,很容易添加新算法或現(xiàn)有算法的新實(shí)現(xiàn)。例如,若要?jiǎng)?chuàng)建新的公鑰算法,應(yīng)從 AsymmetricAlgorithm 類繼承。若要?jiǎng)?chuàng)建特定算法的新實(shí)現(xiàn),應(yīng)創(chuàng)建該算法的非抽象派生類。
.NET Framework加密模型之流設(shè)計(jì)
公共語(yǔ)言運(yùn)行庫(kù)使用面向流的設(shè)計(jì)實(shí)現(xiàn)對(duì)稱算法和哈希算法。該設(shè)計(jì)的核心是 CryptoStream 類,它派生自 Stream 類?;诹鞯募用軐?duì)象全都支持用于處理對(duì)象的數(shù)據(jù)傳輸部分的單個(gè)標(biāo)準(zhǔn)接口 (CryptoStream)。由于所有對(duì)象都在標(biāo)準(zhǔn)接口上生成,所以可以將多個(gè)對(duì)象(如一個(gè)哈希對(duì)象后跟一個(gè)加密對(duì)象)鏈接在一起,并且可以對(duì)數(shù)據(jù)執(zhí)行多個(gè)操作而不需要為數(shù)據(jù)提供任何中間存儲(chǔ)。使用流模型時(shí)還可以用更小的對(duì)象生成對(duì)象。例如,可以將加密算法和哈希算法的組合視為單個(gè)流對(duì)象(即使該對(duì)象可能是從一組流對(duì)象生成的)。
.NET Framework加密模型之加密配置
使用加密配置可以將算法的特定實(shí)現(xiàn)解析為算法名稱,從而使 .NET Framework 加密類具有可擴(kuò)展性。您可以添加自己的硬件或軟件算法實(shí)現(xiàn),并將該實(shí)現(xiàn)映射到您選擇的算法名稱上。如果未在配置文件中指定算法,則使用默認(rèn)設(shè)置。有關(guān)加密配置的更多信息,請(qǐng)參見配置加密類。
.NET Framework加密模型之加密任務(wù)
描述如何使用基類庫(kù)執(zhí)行特定的加密任務(wù)。
System.Security.Cryptography 命名空間包含一些類,通過(guò)這些類您可以執(zhí)行對(duì)稱和不對(duì)稱加密,創(chuàng)建哈希值和提供隨機(jī)數(shù)生成。成功的加密是將這些任務(wù)組合在一起的結(jié)果。本節(jié)描述您可以執(zhí)行的用于創(chuàng)建.NET Framework加密模型方案的密鑰加密任務(wù)。