備註
本文專屬於 .NET Framework。 它不適用於較新的 .NET 實作,包括 .NET 6 和更新版本。
開發人員可以使用 Windows SDK 建立密碼編譯物件的方式有四種:
使用 new 運算子建立 物件。
在該演算法的抽象類上呼叫 Create 方法,以建立實作特定密碼編譯演算法的物件。
呼叫 CryptoConfig.CreateFromName 方法,建立實作特定加密演算法的物件。
在該演算法類型的抽象類上呼叫 Create 方法,以建立實作密碼編譯演算法類別的物件(例如對稱區塊加密)。SymmetricAlgorithm
例如,假設開發人員想要計算一組位元組的SHA1哈希。 命名空間 System.Security.Cryptography 包含 SHA1 演算法的兩個實作,一個純粹受控的實作,另一個會包裝 CryptoAPI。 開發人員可以藉由呼叫SHA1Managed運算符,選擇具現化特定的SHA1實作,例如 。 不過,如果只要類別實作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< 元素中> 屬性的值是 Common Language Runtime 用來尋找 類別的字串。 您可以使用任何符合 指定完整類型名稱中所指定需求的字串。
許多演算法名稱可以對應至相同的類別。 nameEntry< 元素會將>類別對應至一個易記演算法名稱。 name 屬性可以是呼叫 System.Security.Cryptography.CryptoConfig.CreateFromName 方法時所使用的字串,或是命名空間中System.Security.Cryptography抽象密碼編譯類別的名稱。 類別屬性的值是 cryptoClass< 元素中的>屬性名稱。
備註
您可以呼叫 SHA1.Create 或 Security.CryptoConfig.CreateFromName(“SHA1”) 方法來取得 SHA1 演算法。 每個方法都只保證它會傳回實作 SHA1 演演算法的物件。 您不需要將演算法的每個易記名稱對應至組態檔中的相同類別。
預設名稱及其對應類別的清單,請參閱 CryptoConfig。