75 votes

Avantages et inconvénients de RNGCryptoServiceProvider

Quels sont les avantages et les inconvénients de l'utilisation de System.Security.Cryptography.RNGCryptoServiceProvider vs System.Random. Je sais qu' RNGCryptoServiceProvider plus aléatoire", c'est à dire de moins en moins prévisibles pour les pirates. Toutes les autres avantages ou les inconvénients?


Mise à JOUR:

Selon les réponses, voici les avantages et les inconvénients de l'utilisation de RNGCryptoServiceProvider ce jour:

Pros

  • RNGCryptoServiceProvider est un plus du point de vue cryptographique nombre aléatoire, le sens qu'il serait mieux pour la détermination des clés de chiffrement et les goûts.

Cons

  • Random est plus rapide car il est plus simple de calcul; lorsqu'elles sont utilisées dans les simulations ou de longs calculs cryptographiques de l'aléatoire n'a pas d'importance, ce doit être utilisé.

56voto

Charlie Martin Points 62306

Une RNG cryptographiquement forte sera plus lent --- il faut plus de calcul --- et sera spectralement blanc, mais ne sera pas aussi bien adapté aux simulations ou méthodes de Monte Carlo, à la fois parce qu'ils prennent plus de temps, et parce qu'ils peuvent ne pas être répétable, ce qui est agréable pour les tests.

En général, vous souhaitez utiliser un PRNG cryptographique lorsque vous souhaitez un numéro unique, tel qu'un UUID, ou comme clé de cryptage, et un PRNG déterministe pour la vitesse et la simulation.

12voto

Yury Chaikou Points 71

System.Random n'est pas thread-safe.

10voto

Jader Dias Points 23461

Oui, il n'y a plus qu'un seul. Comme Charlie Martin a écrit Système.Le hasard est plus rapide.

Je tiens à ajouter les informations suivantes:

Le RNGCryptoServiceProvider est la valeur par défaut de la mise en œuvre d'une sécurité conforme aux normes du générateur de nombre aléatoire. Si vous avez besoin d'une variable aléatoire pour des raisons de sécurité, vous devez utiliser cette classe, ou un équivalent, mais ne pas utiliser de Système.Aléatoire, car il est hautement prévisible.

Pour toutes les autres utilisations les plus élevés de la performance de Système.Aléatoire, et l'équivalent des classes, sont les bienvenus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X