是否可以在Windows XP上使用SHA256CryptoServiceProvider和相关的SHA2提供程序?我知道提供商使用Vista中包含的加密服务以上是否可以从Microsoft在XP中安装这些服务?
编辑:我应该提供更多信息,关于MSDN上的文档在Windows XP中受支持是错误的。请参阅http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=355031,其中Microsoft已确认并接受此设计。然而,在任何地方都没有列出任何工作(我看到)所以我不确定是否可以安装这需要正常工作的服务,或者是否像在Windwills上试图在WinXP上安装IIS 6或7一样倾斜。
答案 0 :(得分:13)
似乎MSDN文档是正确的,因为它应该在设计中支持XP SP3,如果不是,那只是因为 bug 在.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)";
}
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机器上运行。
答案 1 :(得分:2)
我已经成功使用了以下片段,虽然我对此并不满意,并且几乎发布了一个关于当时实例化SHA512
的各种看似随意的方法的问题。这是在Windows XP,7和可能的Vista(不记得)上测试的。
using System.Security.Cryptography;
SHA512 hash;
try
{
hash = new SHA512Cng( );
}
catch ( PlatformNotSupportedException )
{
hash = SHA512.Create( );
}
我认为这应该与SHA256
相同。
此外,将两个版本的输出与unix sha2实用程序进行比较表明它们都正确实现了SHA512。
答案 2 :(得分:0)
来自MSDN: SHA256CryptoServiceProvider类
平台: Windows Vista,Windows XP SP2,Windows Server 2003