Мне нужно сгенерировать UUID для использования в качестве непредсказуемых / угадываемых идентификаторов сеанса.
Это легко сделать с помощью библиотеки UUID от boost:
boost::uuids::uuid newUUID()
{
static boost::uuids::random_generator gen;
return gen();
}
Возвращенный UUID можно легко преобразовать в строку.
Приведенный выше код эквивалентен:
boost::uuids::uuid newUUID()
{
static boost::uuids::basic_random_generator<boost::mt19937> gen;
return gen();
}
Итак, мы используем генератор псевдослучайных чисел Mersenne Twister 19937. Похоже, что boost берет на себя задачу правильно заполнить его серьезный.
Однако мне интересно, можно ли получить что-то важное - с точки зрения безопасности - за счет использования недетерминированного RNG, такого как boost :: random_device, а также то, как это повлияет на скорость генерации UUID.
boost::uuids::uuid newUUID()
{
static boost::uuids::basic_random_generator<boost::random_device> gen;
return gen();
}
Приветствуются советы людей, разбирающихся в вопросах безопасности.