CryptDeriveKey(OID)在Windows 7 64位下使用SHA256是未知的

我testing了一些使用VS2008 SP1(针对.NET Framework 3.5 SP1)构build的组件。 我在PasswordDeriveBytes.CryptDeriveKey传递了“SHA256”作为散列algorithm参数的exception(OID)是未知的(我也试过这里提到的“SHA256Managed”和“SHA256Cng”)。 此方法在XP SP3下正常工作。 据我所知,这些algorithm添加3.5的SP1和Windows 7自带3.5 SP1。

所以我的问题是如何在Windows 7下获得SHA256?

http://www.codeplex.com/clrsecurity/SourceControl/changeset/view/18423并点击“下载”。 湾 解压并构建下载的Security.Cryptography \ src \ Security.Cryptography.csproj VS 2008项目。 C。 编写一个程序来调用Security.Cryptography.Oid2.RegisterSha2OidInformationForRsa()。 d。 执行该程序,该程序将向操作系统注册SHA-256 OID。 即 如果这是一个64位体系结构,则还必须重新编译x86平台的程序并执行它。 这是因为Visual Studio 2008是一个32位应用程序,并要求在32位注册表中进行相同的更改。

使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用System.Text;

命名空间RegisterSHA256 {class Program {静态无效的主要(字符串[]参数){Console.WriteLine(“++++开始注册SHA-256 ++++”); Security.Cryptography.Oid2.RegisterSha2OidInformationForRsa(); Console.WriteLine(“++++结束注册SHA-256 +++++”); }}}