有C ++ 11 CSPRNG吗?

时间:2015-09-01 10:27:08

标签: c++ c++11 random mersenne-twister

我们知道,Mersenne Twister is not crytographically secure

  

Mersenne Twister不具有加密安全性。 (MT基于   线性递归。由a生成的任何伪随机数序列   线性递归是不安全的,因为从足够长的子序列开始   在输出中,可以预测其余的输出。)

但很多来源,例如Stephan T. Lavavej甚至this website。建议几乎总是(逐字)使用Mersenne Twister,如下所示:

auto engine = mt19937{random_device{}()};

它们有不同的风格,比如使用std::seed_seq或复杂的操作方式std::tm,但这是最简单的方法。

即使std::random_device is not always reliable

  

std::random_device可以用来实现   实现定义的伪随机数引擎,如果a   非确定性源(例如硬件设备)不可用   实施。在这种情况下,每个std::random_device对象都可以   生成相同的数字序列。

/dev/urandom/dev/random辩论rages on

虽然标准库提供了很好的PRNG集合,但似乎并没有提供任何CSPRNG。我更喜欢坚持使用标准库,而不是使用POSIX,仅限Linux的标题库等.Mersenne Twister可以被操作以使其加密安全吗?

0 个答案:

没有答案