Как я могу создать криптографически безопасное псевдослучайное число в C #?

Есть ли быстрая реализациякриптографически безопасный генератор псевдослучайных чисел (CSPRNG) для C # 3.0 (.NET Framework 3.5), для маркеров аутентификации?

Ответы на вопрос(3)

RNGCryptoServiceProvider учебный класс

Не существует действительно быстрого безопасного генератора случайных чисел. Если вы хотите быстро, вы должны использовать обычный класс Random. Если вы хотите обеспечить безопасность, вы должны использовать генератор случайных чисел в пространстве имен криптографии, но это значительно медленнее. Вы просто можетеу меня есть оба.

 Guffa22 нояб. 2014 г., 15:24
@CodesInChaos: Итак; быстро, безопасно, просто - выбирайте любые два. :)
 CodesInChaos22 нояб. 2014 г., 14:59
Если ты'Если вы готовы взаимодействовать с собственной криптографической реализацией, вы можете добиться превосходной производительности (в несколько раз быстрее, чемSystem.Random) и безопасность.
Решение Вопроса
using System.Security.Cryptography;
...
using(RandomNumberGenerator rng = new RNGCryptoServiceProvider())
{
    byte[] tokenData = new byte[32];
    rng.GetBytes(tokenData);

    string token = Convert.ToBase64String(tokenData);
}
 configurator03 нояб. 2009 г., 17:36
Криптоанализ генератора WinAPI GUID показывает, что, поскольку последовательность GUID V4 является псевдослучайной, с учетом начального состояния можно прогнозировать до следующих 250 000 GUID, возвращаемых функцией UuidCreate. Вот почему GUID не следует использовать в криптографии, например, в качестве случайных ключей. (отen.wikipedia.org/wiki/Globally_Unique_Identifier)
 John Gietzen03 нояб. 2009 г., 18:07
Это н'В частности, криптография, хотя И было бы сложно предсказать исходное состояние машины.
 LaJmOn15 февр. 2012 г., 17:01
Распространенной атакой является DDoS сервер, пока он не будет перезапущен. Тогда прогнозировать начальное состояние (системные часы) намного проще.

Ваш ответ на вопрос