在种子中创建更高熵水平的方法
Methods of Creating Higher Levels of Entropy in a Seed
为了好玩,我一直在试验加密方法。我正在使用的方法之一需要一个种子值。我想用真正的随机数来填充它。我知道在C++中获取种子的标准方法是调用时间(NULL),但由于这只是伪随机的,我想知道是否有任何可靠的方法可以收集真正的随机数。唯一的限制是必须能够在C、C++和Java中实现。
提前谢谢。
澄清:当我运行Ubuntu时,这段代码必须运行Windows系统。
它们有很多,但你的术语很混乱,因为任何熵比特的来源都是随机数生成器。你实际上在想"伪随机数"。
也就是说,现在有很多不同的熵源方案。许多类似UNIX的系统都有/dev/random,它通过对物理进程(如缓存大小和内存内容)执行各种魔术来创建随机数。例如,有更强的来源使用放射性衰变的事件间时间。
Fourmilab.ch在这里提供了实随机数。
CCD在黑暗中运行良好。
熔岩灯很不错。
根据您的系统,您可能可以访问真正随机的数据源。例如,Linux中的/dev/random
将为您提供一个加密的强随机位源。它通常很慢,所以当你真的不需要真正的随机性时,使用它来播种PRNG是一个很好的方法。
高分辨率性能计数器的一些魔力可能会给我们带来好的种子。特别是,如果你考虑多核系统,不同的CPU负载等。
Charlie Martin提到,真正随机数的一个好来源是来自相机(视频或静态)。如果你使用数码相机中最低有效位的像素,并将它们连接成所需长度的字符串,你将拥有一个出色的随机数生成器。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 没有为自己的结构调用列表推回方法
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在高通六边形处理器的word32上执行水平求和的最快方法是什么
- 水平求和SSE无符号字节矢量的最快方法
- 在种子中创建更高熵水平的方法