SHA256CryptoServiceProvider和相关的可能在WinXP上使用?

Chr*_*sic 7 c# security encryption sha256

是否可以在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的windwills倾斜.

Mic*_*sis 13

似乎MSDN文档是正确的,它应该在XP SP3中受到设计的支持,如果不是,那只是因为.NET 3.5中的一个错误.

AesCryptoServiceProvider和SHA256CryptoServiceProvider都使用名为"Microsoft Enhanced RSA and AES Cryptographic Provider"的相同cryptograhics服务.在XP下,服务名称略有不同:"Microsoft增强型RSA和AES加密提供程序(原型)".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)";
}
Run Code Online (Sandbox Code Playgroud)

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

在给定的PC上有一个简单的解决方法.转到注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider,找到名为"Microsoft Enhanced RSA and AES Cryptographic Provider(Prototype)"的子项,将其导出到.reg,编辑此.reg并删除"(Prototype)"从它的名字.当您将其导回时,原始密钥将复制到新密钥而不使用(Prototype),具有相同的内容.从现在开始,SHA256CryptoServiceProvider将在这台XPSP3机器上运行.