Плюсы и минусы RNGCryptoServiceProvider
каковы плюсы и минусы использования System.Security.Cryptography.RNGCryptoServiceProvider vs System.Random. Я знаю, что RNGCryptoServiceProvider это больше случайной, т. е. менее предсказуемым для хакеров. Любые другие плюсы или минусы?
обновление:
согласно ответам, вот плюсы и минусы использования RNGCryptoServiceProvider до сих пор:
плюсы
RNGCryptoServiceProviderявляется более сильным криптографически случайным числом, что означает, что было бы лучше для определения ключей шифрования и нравится.
минусы
Randomбыстрее, потому что это более простой расчет; при использовании в симуляциях или длительных вычислениях, где криптографическая случайность не важна, это должно использоваться.
3 ответов:
криптографически сильный RNG будет медленнее - - - он требует больше вычислений - - - и будет спектрально белым, но не будет так хорошо подходить для моделирования или методов Монте-Карло, потому что они do занять больше времени, и потому, что они не могут быть повторяемыми, что хорошо для тестирования.
В общем случае вы хотите использовать криптографический PRNG, когда вам нужен уникальный номер, такой как UUID, или в качестве ключа для шифрования, а также детерминированный PRNG для скорости и моделирования.
Да, есть только один. Как писал Чарли Мартин
System.Randomбыстрее.Я хотел бы добавить следующую информацию:
The
RNGCryptoServiceProvider- это реализация по умолчанию генератора случайных чисел, соответствующего стандартам безопасности. Если вам нужна случайная переменная в целях безопасности, вы должны использовать этот класс или его эквивалент, но не использовать System.Случайный, потому что он очень предсказуем.для всех других применений более высокая производительность
System.Random, и эквивалентные классы, приветствуются.
Comments