備註
本文專屬於 .NET Framework。 它不適用於較新的 .NET 實作,包括 .NET 6 和更新版本。
開發人員可以使用 Windows SDK 建立密碼編譯物件的方式有四種:
使用
new運算元建立一個物件。透過在抽象類別中呼叫
Create該演算法的方法,建立一個實作特定密碼演算法的物件。呼叫 CryptoConfig.CreateFromName 方法,建立實作特定加密演算法的物件。
透過呼叫該加密演算法類型(例如,對稱區塊加密器)的抽象類別中的
Create方法,來建立一個實作該類別的物件(例如SymmetricAlgorithm)。
例如,假設開發人員想要計算一組位元組的SHA1哈希。 命名空間 System.Security.Cryptography 包含 SHA1 演算法的兩個實作,一個純粹受控的實作,另一個會包裝 CryptoAPI。 開發者可透過呼叫運算元SHA1Managed來選擇實例化特定的 SHA1 實作(例如 )。new 不過,如果只要類別實作SHA1哈希演算法,Common Language Runtime 就不會載入哪個類別,開發人員就可以呼叫 SHA1.Create 方法來建立物件。 此方法會呼叫 System.Security.Cryptography.CryptoConfig.CreateFromName(“System.Security.Cryptography.SHA1”),其必須傳回 SHA1 哈希演算法的實作。
開發人員也可以呼叫 System.Security.Cryptography.CryptoConfig.CreateFromName(“SHA1”), 因為根據預設,密碼編譯組態包含 .NET Framework 中隨附演算法的簡短名稱。
如果不使用哪一種哈希演算法,開發人員可以呼叫 HashAlgorithm.Create 方法,這個方法會傳回實作哈希轉換的物件。
組態檔中的映射演算法名稱
根據預設,運行時間會針對這四個 SHA1CryptoServiceProvider 案例傳回 物件。 不過,計算機管理員可以變更最後兩個案例中方法所傳回的物件類型。 若要這樣做,您必須將易記演算法名稱對應至您想要在計算機組態檔中使用的類別(Machine.config)。
下列範例示範如何設定運行時間,讓 System.Security.Cryptography.SHA1.Create、 System.Security.CryptoConfig.CreateFromName(“SHA1”)和 System.Security.Cryptography.HashAlgorithm.Create 傳回 MySHA1HashClass 物件。
<configuration>
<!-- Other configuration settings. -->
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass MySHA1Hash="MySHA1HashClass, MyAssembly
Culture='en', PublicKeyToken=a5d015c7d5a0b012,
Version=1.0.0.0"/>
</cryptoClasses>
<nameEntry name="SHA1" class="MySHA1Hash"/>
<nameEntry name="System.Security.Cryptography.SHA1"
class="MySHA1Hash"/>
<nameEntry name="System.Security.Cryptography.HashAlgorithm"
class="MySHA1Hash"/>
</cryptoNameMapping>
</cryptographySettings>
</mscorlib>
</configuration>
你可以在元素中指定屬性<cryptoClass>名稱(前一個例子中將屬性MySHA1Hash命名為 )。 元素中 <cryptoClass> 屬性的值是通用語言執行時用來尋找類別的字串。 您可以使用任何符合 指定完整類型名稱中所指定需求的字串。
許多演算法名稱可以對應至相同的類別。 該 <nameEntry> 元素 將類別映射到一個友善的演算法名稱。 屬性 name 可以是呼叫 System.Security.Cryptography.CryptoConfig.CreateFromName 方法時使用的字串,或是命名空間中 System.Security.Cryptography 抽象密碼類別的名稱。 屬性的 class 值是該元素中 <cryptoClass> 屬性的名稱。
備註
您可以呼叫 SHA1.Create 或 Security.CryptoConfig.CreateFromName(“SHA1”) 方法來取得 SHA1 演算法。 每個方法都只保證它會傳回實作 SHA1 演演算法的物件。 您不需要將演算法的每個易記名稱對應至組態檔中的相同類別。
預設名稱及其對應類別的清單,請參閱 CryptoConfig。