是否有可能在Windows XP上使用SHA256CryptoServiceProvider及相关SHA2供应商?我知道商使用包含在Vista中的加密服务及以上,才有可能从微软安装在XP这些服务?

编辑:我应该提供更多的信息,在MSDN文档是错误的关于这个在Windows XP中被支持。请参见 http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback。 ASPX?FeedbackID = 355031 哪里,这是承认和接受微软通过设计。但是周围有上市的任何地方(我看到),所以我不知道是否有可能安装此要求正常工作的服务或不工作,如果它就像在windwills要安装在WinXP IIS 6或7倾斜。

有帮助吗?

解决方案

看来,MSDN文档是正确的,某种意义上说,它的应该的在XP SP3通过设计来支持,如果它不是,它只是一个错误的,因为在.NET 3.5。

这两个AesCryptoServiceProvider和SHA256CryptoServiceProvider使用名为相同cryptograhics服务“Microsoft增强RSA和AES加密提供”。在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类的构造函数做的不可以检查(原型)的名字,这就是为什么他们在XP失败。如果他们这么做,他们会成功。

有一个给定的PC上的一个简单的解决方法。转到注册表项的 HKEY_LOCAL_MACHINE \ SOFTWARE \微软\加密\默认\提供商后,发现其命名为 “Microsoft增强RSA和AES加密提供程序(原型)”,导出为.reg的子项,编辑此.reg从它的名字中删除“(原型)”。当您导入回来,原来的钥匙将被复制到无(原型)的新项,内容相同。从现在开始,将SHA256CryptoServiceProvider本XPSP3机器上工作。

其他提示

我已经与下面的代码段成功,虽然我不是很满意,它几乎就贴在各种看似杂乱无章的方式在当时实例SHA512的SO问题。这是在Windows XP,图7,和可能的Vista的(不记得)。

测试
using System.Security.Cryptography;

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

我认为这应该工作一样有SHA256

另外,这两个版本的输出与一个unix SHA2效用比较表明,它们都正确实现SHA512。

从MSDN: SHA256CryptoServiceProvider类

平台: Windows Vista中,Windows XP SP2中的Windows Server 2003

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top