Question

Est-il possible d'utiliser des fournisseurs de SHA2 SHA256CryptoServiceProvider et connexes sous Windows XP? Je sais que les fournisseurs utilisent les services de cryptographie qui sont inclus dans Vista et plus est-il possible d'installer ces services dans XP de Microsoft?

EDIT: J'ai fourni plus d'informations sur la documentation MSDN est erroné en ce qui concerne celle-ci étant pris en charge dans Windows XP. Voir http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback. aspx? FeedbackID = 355031 où cela est reconnu et accepté par Microsoft que par la conception. Cependant, il n'y a pas de travail autour répertorié nulle part (que j'ai vu), donc je ne sais pas s'il est possible d'installer les services où le besoin de fonctionner correctement ou si elle est comme l'inclinaison à windwills essayant d'installer IIS 6 ou 7 sur Windows XP.

Était-ce utile?

La solution

Il semble que la documentation MSDN est juste dans le sens où il devraient être pris en charge dans XP SP3 par la conception, et si elle est pas, il est seulement en raison d'un bug .NET 3.5.

Les deux AesCryptoServiceProvider et SHA256CryptoServiceProvider utilisent le même service de cryptograhics nommé "Microsoft Enhanced RSA et AES Cryptographic Provider". Sous XP, le nom du service est légèrement différent: "Microsoft Enhanced RSA et AES Cryptographic Provider (Prototype)" . Le constructeur de AesCryptoServiceProvider effectue une simple vérification:

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

Les constructeurs de classes SHAxxxCryptoServiceProvider font pas vérifier le (Prototype) nom, ce qui est la raison pour laquelle ils échouent dans XP. Si elles le faisaient, ils réussiraient.

Il existe une solution simple sur un PC donné. Aller à clé de Registre HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ Paramètres par défaut \ Provider , trouver sa sous-clé nommée "Microsoft Enhanced RSA et AES Cryptographic Provider (Prototype)", l'exporter vers .reg, modifier ce .reg et supprimer « (Prototype) » de son nom. Lorsque vous importez en arrière, la clé d'origine sera dupliqué à la nouvelle clé sans (Prototype), avec le même contenu. Désormais, SHA256CryptoServiceProvider travaillera sur cette machine XPSP3.

Autres conseils

J'ai eu du succès avec l'extrait suivant, bien que je ne suis pas vraiment satisfait et presque une question SO posté sur les différentes façons apparemment hasardeux d'instanciation SHA512 à l'époque. Ceci est testé sur Windows XP, 7, Vista et peut-être (ne me souviens pas).

using System.Security.Cryptography;

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

Je pense que cela devrait fonctionner même avec SHA256.

En outre, en comparant la sortie des deux versions avec un utilitaire de sha2 unix a suggéré que les deux mettent en œuvre correctement SHA512.

De MSDN: SHA256CryptoServiceProvider classe

Plates-formes: Windows Vista, Windows XP SP2, Windows Server 2003

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top