System.Security.Cryptography.RandomNumberGenerator
est la classe de base pour les implémentations de générateur de nombres pseudo-aléatoires cryptographiquement sécurisés (CSPRNG). Dans le Framework .NET, RandomNumberGenerator.Create()
renvoie une instance de RNGCryptoServiceProvider
(sauf si configuré différemment par CryptoConfig
). Dans .NET Core, RandomNumberGenerator.Create()
renvoie un type opaque basé sur BCryptGenRandom (Windows) ou le générateur de nombres aléatoires d'OpenSSL (!Windows).
RandomNumberGenerator.Create()
est le seul moyen d'obtenir une instance de RNG sur .NET Core, et puisqu'il fonctionne à la fois sur .NET Core et .NET Framework, il est le plus portable.
Bien sûr, si vous générez un vecteur d'initialisation, vous pouvez également appeler la méthode d'instance SymmetricAlgorithm.GenerateIV()
pour qu'elle utilise le CSPRNG en interne; bien que, comme le dit la documentation, l'appeler est inutile car un IV aléatoire est créé avec l'instance (GenerateIV
peut être utilisé pour le forcer à en générer un nouveau avant l'appel suivant à CreateEncryptor
).