使用大气噪声的真随机数发生器

joa*_*nna 5 random numbers trng

我必须建立一个One Time Pad系统,为此,我必须建立自己的TRNG.我想知道如何制作记录大气噪声并使用它来生成随机数.到目前为止,我已经尝试过录制.wav文件并用Java读取它,但这些值似乎并非随机.有什么建议?我知道Random.org,但是我不能真正使用他们的发生器,我必须建立自己的发生器,所以我想要的是对Random.org上的人如何建立他们的数字生成器的一些见解,大气噪声作为一个"随机性"的来源.

Dan*_*pez 5

非实时解决方案

您可以做的是在进入之前录制房间周围的音频并保存临时WAV文件.如果你知道WAV文件是如何工作的,它基于RIFF规范.然后剥去长度为44个字节的WAV标头.然后读取音频字节并根据您是否要生成WORDS,DWORDS或BYTES进行正确的转换,这取决于您.然后你应该有一些随机值来使用.然后相应地使用这些随机值.

实时解决方案

因为我不知道你是想用Java还是其他语言来编程.另外,我不知道预定的平台; 所以我不推荐你任何实时音频处理库.

对于C#,您可以使用NAudio,您可以实时录制音频并接收音频字节.然后你可以将音频字节转换为DWORD,QWORD,WORD等.你应该能够有一些随机值.记住停止记录并在生成随机数时停止释放非托管资源.

关于WAV文件规范的好资源

WAV文件结构

链接到规范(易于理解)


MBo*_*ber 0

从软件中获得真正的随机数几乎是不可能的。即使是 wav 文件中的静态也可能受到计算机生成的周期性 EMI 的影响,因此不是纯粹随机的。

您可以使用特殊的硬件还是被迫坚持使用纯软件?为什么伪随机数不能满足您的需求?他们在相对少量的随机样本上表现良好。因为您想在 OTP 中使用随机数,所以我猜您不会大规模使用它。

您能提供更多细节吗?