Плюсы и минусы RNGCryptoServiceProvider



каковы плюсы и минусы использования System.Security.Cryptography.RNGCryptoServiceProvider vs System.Random. Я знаю, что RNGCryptoServiceProvider это больше случайной, т. е. менее предсказуемым для хакеров. Любые другие плюсы или минусы?





обновление:



согласно ответам, вот плюсы и минусы использования RNGCryptoServiceProvider до сих пор:



плюсы





  • RNGCryptoServiceProvider является более сильным криптографически случайным числом, что означает, что было бы лучше для определения ключей шифрования и нравится.


минусы





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

516   3  

3 ответов:

криптографически сильный RNG будет медленнее - - - он требует больше вычислений - - - и будет спектрально белым, но не будет так хорошо подходить для моделирования или методов Монте-Карло, потому что они do занять больше времени, и потому, что они не могут быть повторяемыми, что хорошо для тестирования.

В общем случае вы хотите использовать криптографический PRNG, когда вам нужен уникальный номер, такой как UUID, или в качестве ключа для шифрования, а также детерминированный PRNG для скорости и моделирования.

System.Random не является потокобезопасным.

Да, есть только один. Как писал Чарли Мартин System.Random быстрее.

Я хотел бы добавить следующую информацию:

The RNGCryptoServiceProvider - это реализация по умолчанию генератора случайных чисел, соответствующего стандартам безопасности. Если вам нужна случайная переменная в целях безопасности, вы должны использовать этот класс или его эквивалент, но не использовать System.Случайный, потому что он очень предсказуем.

для всех других применений более высокая производительность System.Random, и эквивалентные классы, приветствуются.

Comments

    Ничего не найдено.