Frage

Ist es möglich, SHA256CryptoServiceProvider und verwandte SHA2 -Anbieter unter Windows XP zu verwenden? Ich weiß, dass die Anbieter die in Vista enthaltenen Kryptographie -Dienste verwenden. Ist es möglich, diese Dienste in XP von Microsoft zu installieren?

BEARBEITEN: Ich hätte weitere Informationen bereitstellen sollen. Die Dokumentation über das MSDN ist in Bezug auf diese in Windows XP unterstützt. Sehen http://connect.microsoft.com/visualstudio/feedback/viewfeedback.aspx?feedbackid=355031 Wo dies von Microsoft als Design anerkannt und akzeptiert wird. Es gibt jedoch keine Arbeiten, die nirgendwo aufgelistet sind (was ich gesehen habe). Ich war mir also nicht sicher, ob es möglich ist, die Dienste zu installieren, die dies erfordert, um ordnungsgemäß zu funktionieren, oder ob es sich um Kippen in Wedlers neigt, um IIS 6 oder 7 auf WinXP zu installieren.

War es hilfreich?

Lösung

Es scheint, dass die MSDN -Dokumentation in dem Sinne richtig ist sollte in XP SP3 von Design unterstützt werden, und wenn dies nicht der Fall ist, liegt es nur wegen a Insekt in .net 3.5.

Sowohl AescryptoServiceProvider als auch SHA256CryptoServiceProvider verwenden denselben Cryptograhics -Dienst mit dem Namen "Microsoft Enhanced RSA und AES Cryptographic Provider". Unter XP ist der Name des Dienstes etwas anders: "Microsoft verbesserte RSA und AES Cryptographic Provider (Prototyp)". Der Konstruktor von AescryptoServiceProvider führt eine einfache Prüfung durch:

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)";
}

Die Konstrukteure von ShaxxxCryptoServiceProvider -Klassen tun dies nicht Überprüfen Sie den Namen (Prototypen) und deshalb scheitern sie in XP. Wenn sie das tun würden, würden sie Erfolg haben.

Es gibt eine einfache Problemumgehung auf einem bestimmten PC. Gehen Sie zum Registrierungsschlüssel HKEY_LOCAL_MACHINE Software Microsoft Cryptography Defaults Provider, Finden Sie den Unterschlüssel mit dem Namen "Microsoft Enhanced RSA und AES Cryptographic Provider (Prototyp)", exportieren Sie ihn in .reg, bearbeiten Sie diese .reg und löschen "(Prototyp)" aus seinem Namen. Wenn Sie es zurück importieren, wird der ursprüngliche Schlüssel ohne (Prototyp) mit demselben Inhalt auf den neuen Schlüssel dupliziert. Von nun an wird SHA256CryptoServiceProvider an dieser XPSP3 -Maschine arbeiten.

Andere Tipps

Ich hatte Erfolg mit dem folgenden Snippet, obwohl ich nicht wirklich zufrieden bin und fast eine so Frage zu den verschiedenen scheinbar zufälligen Möglichkeiten zur Instanziierung gestellt habe SHA512 damals. Dies wird unter Windows XP, 7 und möglicherweise Vista getestet (kann sich nicht erinnern).

using System.Security.Cryptography;

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

Ich denke, das sollte gleich funktionieren mit SHA256.

Der Vergleich der Ausgabe beider Versionen mit einem UNIX SHA2 -Dienstprogramm deutete darauf hin, dass beide SHA512 korrekt implementieren.

Von MSDN: SHA256CryptoServiceProvider -Klasse

Plattformen: Windows Vista, Windows XP SP2, Windows Server 2003

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top