2010-01-06 14 views
1

我測試了一些使用VS2008 SP1(針對.NET Framework 3.5 SP1)構建的組件。 我通過傳遞「SHA256」作爲散列算法的參數(我也嘗試過使用「SHA256Managed」和「SHA256Cng」,如here)的方法​​中發現異常「(OID)未知」。此方法在XP SP3下正常工作。據我瞭解,這些算法添加3.5的SP1和Windows 7自帶3.5 SP1。CryptDeriveKey(OID)在Windows 7 64位下未知,SHA256

所以我的問題是我如何可以在Windows 7下獲得SHA256?

回答

1

http://www.codeplex.com/clrsecurity/SourceControl/changeset/view/18423然後點擊「下載」。 b。解壓並構建下載的Security.Cryptography \ src \ Security.Cryptography.csproj VS 2008項目。 c。編寫一個程序來調用Security.Cryptography.Oid2.RegisterSha2OidInformationForRsa()。 d。執行該程序,該程序將向操作系統註冊SHA-256 OID。 e。如果這是一個64位體系結構,則還必須重新編譯x86平臺的程序並執行它。這是因爲Visual Studio 2008是一個32位應用程序,並要求在32位註冊表中進行相同的更改。

using System; using System.Collections.Generic;使用System.Linq的 ; using System.Text;

命名空間RegisterSHA256 { 類節目 { 靜態無效的主要(字符串[]參數) { Console.WriteLine( 「++++開始登記SHA-256 ++++」); Security.Cryptography.Oid2.RegisterSha2OidInformationForRsa(); Console.WriteLine(「++++結束於寄存器SHA-256 +++++」); } } }