【发布时间】:2014-02-17 17:24:30
【问题描述】:
我认为我似乎已经成功地创建并测试了一个非常简单的脚本,当它在 Windows VPS 上运行时,它可以作为真随机数生成器的构建块。因此,我想知道,如果这么简单,那么伪随机数生成器的意义何在?
这是脚本。
#! /usr/bin/perl
use Time::HiRes qw(gettimeofday);
($seconds, $microseconds[0]) = gettimeofday;
for ($count = 1; $count <= 1000000; $count++)
{
}
($seconds, $microseconds[1]) = gettimeofday;
$difference = $microseconds[1] - $microseconds[0];
print "Content-type:text/html\n\n";
print "$difference";
典型输出:
46980
-953586
47168
67242
59319
从上面的输出可以看出,这个脚本似乎运行良好。
这个脚本在 CPU 速度非常快的专用服务器上是否也能正常工作? VPS 服务器上的时间是否特别不稳定?此脚本是否也适用于所有 Windows 系统?
如果我正在创建一个严重依赖于高质量 TRNG 的应用程序,任何人都可以看出为什么依赖此脚本来达到目的可能是错误的任何原因吗?
【问题讨论】:
-
为什么您的应用程序严重依赖高质量的 TRNG?
-
@ysth 这个问题现在是假设性的。但是,我将来可能想创建一个尽可能公平的游戏,或者我可能想创建一个超安全的加密应用程序。
-
PRNG 尽可能地随机。编写自己的代码是为了“超安全”而做的最糟糕的事情;而是依赖于久经考验的库。
-
@ysth 非常感谢您的回复。但是,我仍然想知道查询中问题的答案。我读到 Windows PRNG 不是很好,将来可能有很多其他原因导致我想使用 TRNG。你能看出我的脚本有什么具体的潜在问题吗?
-
这需要很长时间,并且会受到您无法控制的因素的影响(但可能会受到攻击者的影响)