我一直在使用根据原始多项式实现的LFSR,但是你知道LFSR会以重复的顺序产生许多可能的值,这意味着它不是真正随机的!
一个继续使用LFSR并确保它产生真正随机值的解决方案是使用某种动态方式读取从LFSR输出的值,但我无法弄清楚如何在硬件中执行此操作(VHDL) !
因此,我正在采用另一种方法来真正产生一个定义长度的随机意外重复值,即。 10位
有什么建议吗?我打算用VHDL实现它们!
答案 0 :(得分:3)
生成真正的随机数实际上是一个研究领域。基本上你需要通过某种传感器收集有关一些看似随机的自然现象的信息。目前的硬件和软件是确定性的,因此具有相同的输入将始终产生相同的输出。收集外部传感器信息可以“随机化”您的输入。
这里有一些阅读:https://en.wikipedia.org/wiki/Pseudorandom_number_generator
此外,这是一个在同行评审期刊文章中使用外部传感器输入的实际示例,标题为Random Number Generated from White Noise of Webcam,摘要中包含一小段信息:
随机数生成器在现代密码学中起着非常重要的作用,特别是在个人信息安全方面。例如,从网络摄像头的白噪声生成随机数是个人设备的新方法。通过我们的算法,91%IPcam生成序列通过至少四次统计测试,87%通过所有五个已经批准。相反,与网络摄像头和视频相比,两个生成序列通过所有五个统计测试的可能性大约为80%。结果意味着通过算法改进个人设备(例如笔记本电脑),例如,生成合格的随机数以保护私人信息是必要的。