Как мы знаем, Вихрь Мерсенна is not crytographically secure:Есть ли CSPRNG C++ 11?
Вихрь Мерсенна не криптографически безопасный. (МТ основан на линейную рекурсии. Любая последовательность псевдослучайных чисел, порожденная линейной рекурсией является небезопасной, так как с достаточно длительным subsequencje из выходов, можно предсказать, остальные выходы.)
Но многие источники, такие как Stephan T. Lavavej и даже this website. Совет почти всегда (дословно) использовать Вихрь Мерсенна, как это:
auto engine = mt19937{random_device{}()};
Они бывают разных вкусов, как с помощью std::seed_seq
или сложные способы манипулирования std::tm
, но это самый простой подход.
Даже если std::random_device
is not always reliable:
std::random_device
могут быть реализованы с точки зрения реализации определенного числа двигателя псевдослучайной, если недетерминированная источником (например, аппаратное устройство) не доступен реализации. В этом случае каждый объектstd::random_device
может генерировать такую же последовательность чисел.
/dev/urandom
против /dev/random
дебаты rages on.
Но, хотя стандартная библиотека обеспечивает хорошую сборку PRNG, она, похоже, не предоставляет никаких CSPRNG. Я предпочитаю придерживаться стандартной библиотеки, а не использовать заголовки POSIX, Linux и т. Д. Можно ли манипулировать Mersenne Twister, чтобы сделать ее криптографически безопасной?
To downvoter, как я могу улучшить свой вопрос? – user5287986
Не downvoter (фактически поддерживается), но я думаю, вы должны сделать ссылки кликабельными. – dandan78
* Можно ли манипулировать Mersenne Twister, чтобы сделать его криптографически безопасным? * № –