开发者

How can I generate a cryptographically secure pseudorandom number in C#?

开发者 https://www.devze.com 2022-12-10 07:29 出处:网络
Is there any fast implementation of cryptographically secure pseudorandom n开发者_如何学Goumber generator (CSPRNG) for C# 3.0 (.NET Framework 3.5), for authentication tokens?using System.Security.Cryp

Is there any fast implementation of cryptographically secure pseudorandom n开发者_如何学Goumber generator (CSPRNG) for C# 3.0 (.NET Framework 3.5), for authentication tokens?


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

    string token = Convert.ToBase64String(tokenData);
}


Upd 2022 in .Net 6 RNGCryptoServiceProvider() is obsolete, usage of static methods of RandomNumberGenerator is recommended

private string GetRandomlyGenerateBase64String(int count)
{
    return Convert.ToBase64String(RandomNumberGenerator.GetBytes(count));
}


That depends on what you mean by fast...

There is no really fast secure random generator. If you want fast, you should use the regular Random class. If you want secure you should use the random generator in the Cryptography namespace, but that is significantly slower. You simply can't have both.

0

精彩评论

暂无评论...
验证码 换一张
取 消