2009-08-04 11 views
1

Comment puis-je utiliser C# sur une machine WinXP SP2 compatible FIPS pour hacher de façon unique le contenu d'un fichier donné? Je ne suis pas préoccupé par la performance (encore?). Heureusement, quelqu'un peut signaler une exception à la "règle", mais il semble que les classes "* ServiceProvider" sont compatibles avec FIPS et indisponibles sous WinXP, alors que les classes "* Managed" sont disponibles sur WinXP et non sur FIPS -compliant.HashAlgorithm compatible FIPS sous WinXP?

Et MD5 est sorti car il n'est pas fiable de manière unique (oui, même cette petite probabilité est inacceptable pour mon projet).

+0

Aucun algorithme de hachage n'est fiable de façon unique. Par le [principe du pigeonhole] (http://en.wikipedia.org/wiki/Pigeonhole_principle), vous ne pouvez pas représenter de manière unique tous les fichiers possibles de n'importe quelle longueur en utilisant un hachage à longueur fixe. –

+1

Bien que techniquement vrai, ce n'est pas très utile en informatique ces jours-ci. L'idée est que vous êtes prêt à prendre la chance que ce n'est pas unique, compte tenu des probabilités de l'algorithme. MD5 a été montré pour ne pas valoir le risque, mais SHA256 et SHA512 en valent la peine. SHA1 tombe quelque part entre et est assez bon pour beaucoup de gens, bien que j'hésiterais à l'employer moi-même. Je n'utiliserais jamais MD5. –

Répondre

2

Si tout ce que vous avez besoin est un fournisseur de hachage qui ne déclenche aucune erreur lors de Le paramètre de stratégie compatible FIPS du registre est activé sur l'ordinateur Windows, puis vous pouvez utiliser SHA1CryptoServiceProvider, qui est compatible FIPS et nécessite uniquement .Net 2.0 et XP SP2. Mais si vous avez réellement besoin d'une implémentation conforme à la norme FIPS pour des raisons de sécurité et de politique, alors la réponse courte est de mettre les clients à niveau vers Win XP SP3 (ou un système d'exploitation plus récent) ou d'utiliser un tiers. La partie FIPS a validé les fournisseurs de services cryptographiques (CSP). Alors que Win XP SP2 prend en charge une implémentation conforme SHPS de SHA1 (SHACryptoServiceProvider) qui fonctionnera en mode FIPS (paramètre de registre), SHA1 n'est pas censé être utilisé pour de nouvelles implémentations après 2010 et ne peut plus être conforme aux normes FIPS. tous, en fonction de l'utilisation (c.-à-d. en utilisant la génération de nombres aléatoires par rapport au hachage).

Si vous pouvez obtenir au moins XP SP3, vous pouvez utiliser SHA256CryptoServiceProvider ou SHA512CryptoServiceProvider, qui sont tous les deux compatibles FIPS.