Ни один из случайных механизмов, предоставленных в стандарте C ++, не является "криптографически безопасным", и даже std::random_device
указывается только для генерации "недетерминированных" случайных чисел (в лучшем случае), без необходимости навязывания каких-либо особых требований безопасности.
В частности, uniform_int_distribution
(как и у всех других классов распространения C ++) имеет поведение, определяемое реализацией . Например, реализация стандартной библиотеки C ++ может реализовать uniform_int_distribution
с использованием выборки отклонения или другой стратегии. Это означает, что uniform_int_distribution
не гарантируется как «постоянное время» с точки зрения безопасности (в том смысле, что различия во времени выполнения не могут быть использованы при атаке безопасности; например, таким способом, который может восстановить случайноесемена).