7

是否可以在 Windows XP 上使用 SHA256CryptoServiceProvider 和相关的 SHA2 提供程序?我知道提供商使用 Vista 及更高版本中包含的加密服务,是否可以在 Microsoft 的 XP 中安装这些服务?

编辑:我应该提供更多信息,MSDN 上的文档在 Windows XP 中支持这一点是错误的。请参阅http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355031,其中 Microsoft 承认并接受这是设计使然。但是,任何地方都没有列出任何工作(我看到),所以我不确定是否可以安装正常工作所需的服务,或者是否像在WinXP上安装IIS 6或7一样倾斜。

4

3 回答 3

13

从某种意义上说,MSDN 文档似乎是正确的,它应该在 XP SP3 中被设计支持,如果不是,那只是因为 .NET 3.5 中的一个错误

AesCryptoServiceProvider 和 SHA256CryptoServiceProvider 都使用名为“Microsoft Enhanced RSA and AES Cryptographic Provider”的相同加密服务。在 XP 下,服务的名称略有不同:“Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)”。AesCryptoServiceProvider 的构造函数执行一个简单的检查:

string providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider";
if(Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1)
{
    providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
}

SHAxxxCryptoServiceProvider 类的构造函数检查(原型)名称,这就是它们在 XP 中失败的原因。如果他们这样做了,他们就会成功。

在给定的 PC 上有一个简单的解决方法。转到注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider,找到其名为“Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)”的子项,将其导出为 .reg,编辑此 .reg 并删除“(Prototype)”从它的名字。当你重新导入时,原来的密钥将被复制到没有(原型)的新密钥,内容相同。从现在开始,SHA256CryptoServiceProvider 将在这台 XPSP3 机器上工作。

于 2010-07-27T08:11:42.940 回答
2

我在下面的代码片段上取得了成功,尽管我对它并不满意,并且几乎发布了一个关于当时各种看似随意的实例化方式的 SO 问题SHA512。这是在 Windows XP、7 和可能的 Vista 上测试的(不记得了)。

using System.Security.Cryptography;

        SHA512 hash;
        try
        {
            hash = new SHA512Cng( );
        }
        catch ( PlatformNotSupportedException )
        {
            hash = SHA512.Create( );
        }

我认为这应该与SHA256.

此外,将两个版本的输出与 unix sha2 实用程序进行比较表明它们都正确实现了 SHA512。

于 2009-08-18T16:00:23.167 回答
0

来自 MSDN:SHA256CryptoServiceProvider 类

平台:Windows Vista、Windows XP SP2、Windows Server 2003

于 2009-08-18T13:40:28.247 回答