我只想在代码中使用/dev/random
或/dev/urandom
来生成随机数。这个应用程序将在所有Linux版本上运行。如果/ dev目录中没有这些设备文件,我的应用程序就会失败。所以这些设备文件(/dev/random
和/dev/urandom
)在每个linux中都可用味?
答案 0 :(得分:1)
这些设备是由内核在引导时创建的。大多数GNU / Linux发行版都会有它们但是这并不总是正确的,你可以编译一个内核而不是它们,所以可能有你找不到它们的系统,所以要小心。你应该总是编写处理这种奇怪/讨厌情况的代码。但是,99'99%的系统将运行您的程序。
关于文件,/ dev / random生成其数字收集用户和外围设备产生的噪声,问题是如果熵池为空,则read()操作将阻塞(除非文件已被打开)与O_NONBLOCK)。 / dev / urandom是常规伪随机数生成器,但它是“非阻塞”。
因为你实际上是在编写代码,所以我认为你的程序不需要太多安全性的开发,所以我建议你使用/ dev / urandom,这样你的程序就不会卡在等待熵上/开发/随机的。但是,如果你的程序真的需要安全...好吧,永远不要编写你自己的安全相关代码,除非你真的,真的,真的,真的知道你在做什么。例如,请阅读“侧通道攻击”。
祝你好运。