如何在C#中生成加密安全的伪随机数?

时间:2009-11-03 16:13:39

标签: c# cryptography

对于身份验证令牌,C#3.0(.NET Framework 3.5)是否有cryptographically secure pseudorandom number generator(CSPRNG)的快速实现?

3 个答案:

答案 0 :(得分:101)

using System.Security.Cryptography;
...
using(RandomNumberGenerator rng = new RNGCryptoServiceProvider())
{
    byte[] tokenData = new byte[32];
    rng.GetBytes(tokenData);

    string token = Convert.ToBase64String(tokenData);
}

答案 1 :(得分:3)

答案 2 :(得分:3)

这取决于你的意思快......

没有真正快速安全的随机生成器。如果你想要快,你应该使用常规的Random类。如果你想要安全,你应该在Cryptography命名空间中使用随机生成器,但这要慢得多。你根本不能兼得。