![](/img/trans.png)
[英]how to initialize boost::mt19937 with multiple values without using C++11
[英]Are boost UUIDs generated using default mt19937 RNG secure for session IDs?
我需要生成UUID用作不可預測/可猜測的會話ID。
這可以使用boost的UUID庫輕松實現:
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();
}
感謝有安全見識的人的建議。
MT不是加密安全的RNG。
(由文檔保證) boost::random_device
僅在具有斷層攝影安全性和不確定性的情況下存在。 請注意,對於std::random_device
並非如此。
對於任何嚴肅的應用,您不能僅憑文件證明的擔保就可以。 但是對於小規模的不重要的事情,應該這樣做。
編寫自己的加密安全代碼或系統通常不是一個好主意。 描述某人打敗您的系統有多糟糕,因為這實際上與您需要付出多少努力有關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.