我想设计一个使用随机数生成器的彩票中奖机制。我知道对于计算机,没有真正的随机性,只有“伪随机性”。如果系统被黑客入侵并且看到了随机种子,人们将知道随机数的序列。实际上,有消息说人们这样做并赢得了几张彩票。我正在考虑设计系统的两种方法:
使用随机数生成器作为全局变量。只有一个 随机种子该序列在系统启动时生成。
骗局:
a。一旦看到随机种子,黑客就会知道序列 容易。
b。系统崩溃并重新启动后,该序列将重复 本身。
使用时间戳作为随机种子分别创建一个随机数生成器 时间产生一个数字。
骗局:
a。显然时间戳不能直接使用。有一些 每次都需要使用时间戳来完成技巧。例如, 每次在时间戳上加上或减去一些值。我可以在此处使用哪种算法对时间戳进行这种修改?
b。这种方法是否甚至利用了随机数生成器? 看来我只是自己创建一个随机数...
我们可以看到,以上两种方法都不足够安全。哪种方法稍微好一点?还是有更好的方法?
答案 0 :(得分:0)
几十年来,关于计算机无法使用真正的随机数的概念一直不成立。所有现代台式机和笔记本电脑都具有真正的基于硬件的随机数生成器。甚至大多数小型嵌入式系统也是如此。
也就是说,可能是您的编程语言没有赶上最新的硬件,或者即使是这样,也很容易在RNG中犯错,并从好的生成器中得到不好的结果。因此,除非您知道自己在做什么,否则最好使用random.org之类的东西。