RNGCryptoServiceProvider
. , System.Security.Cryptography.RandomNumberGenerator
( RNGCryptoServiceProvider
):
class DeterministicRandomGenerator : System.Security.Cryptography.RandomNumberGenerator
{
Random r = new Random(0);
public override void GetBytes(byte[] data)
{
r.NextBytes(data);
}
public override void GetNonZeroBytes(byte[] data)
{
for (int i = 0; i < data.Length; i++)
data[i] = (byte)r.Next(1, 256);
}
}
, Random
0, . RNGCryptoServiceProvider
:
RandomNumberGenerator rngCsp =
#if DEBUG
new DeterministicRandomGenerator();
#else
new RNGCryptoServiceProvider();
#endif
byte[] randomBytes = new byte[20];
rngCsp.GetBytes(randomBytes);
MessageBox.Show(Convert.ToBase64String(randomBytes));
, -, , reset RNGCryptoServiceProvider RNGCryptoServiceProvider
RNGCryptoServiceProvider
Win32 CryptGenRandom
, - ( ). . ( Win32 API ,.NET API . , , .) CryptGenRandom
, :
, , , , , , , , , , , , , . (PRNG). Windows Vista 1 (SP1) PRNG AES, NIST Special Edition 800-90. Windows Vista, Windows Storage Server 2003 Windows XP PRNG, (FIPS) 186-2.
"" RNGCryptoServiceProvider
, , .