在种子中创建更高熵水平的方法

Methods of Creating Higher Levels of Entropy in a Seed

本文关键字:水平 方法 高熵 种子 创建      更新时间:2023-10-16

为了好玩,我一直在试验加密方法。我正在使用的方法之一需要一个种子值。我想用真正的随机数来填充它。我知道在C++中获取种子的标准方法是调用时间(NULL),但由于这只是伪随机的,我想知道是否有任何可靠的方法可以收集真正的随机数。唯一的限制是必须能够在C、C++和Java中实现。

提前谢谢。

澄清:当我运行Ubuntu时,这段代码必须运行Windows系统。

它们有很多,但你的术语很混乱,因为任何熵比特的来源都是随机数生成器。你实际上在想"伪随机数"。

也就是说,现在有很多不同的熵源方案。许多类似UNIX的系统都有/dev/random,它通过对物理进程(如缓存大小和内存内容)执行各种魔术来创建随机数。例如,有更强的来源使用放射性衰变的事件间时间。

Fourmilab.ch在这里提供了实随机数。

CCD在黑暗中运行良好。

熔岩灯很不错。

根据您的系统,您可能可以访问真正随机的数据源。例如,Linux中的/dev/random将为您提供一个加密的强随机位源。它通常很慢,所以当你真的不需要真正的随机性时,使用它来播种PRNG是一个很好的方法。

高分辨率性能计数器的一些魔力可能会给我们带来好的种子。特别是,如果你考虑多核系统,不同的CPU负载等。

Charlie Martin提到,真正随机数的一个好来源是来自相机(视频或静态)。如果你使用数码相机中最低有效位的像素,并将它们连接成所需长度的字符串,你将拥有一个出色的随机数生成器。