我只想在我的代碼中使用/dev/random
或/dev/urandom
來生成隨機數。這個應用程序將在所有的linux版本上運行。如果這些設備文件不在/ dev目錄中,我的應用程序將會失敗。因此,這些設備文件(/dev/random
和/dev/urandom
)在每種linux版本中都可用?是/ dev/random和/ dev/urandom在每臺linux機器上都可用?
0
A
回答
1
這些設備是在啓動時由內核創建的。大多數GNU/Linux發行版都會有它們,但這並非總是如此,你可以編譯一個內核以避免讓它們出現,所以可能會有系統在那裏找不到它們,所以要小心。你應該總是編寫處理這種奇怪/惡劣情況的代碼。然而,99'99%的系統將運行你的程序將有兩個文件。
關於這些文件,/ dev/random會產生它的數字,收集用戶和外設產生的噪聲,問題是如果熵池是空的,read()操作會阻塞它(除非文件已經用O_NONBLOCK打開)。/dev/urandom是普通的僞隨機數生成器,但它是「非阻塞」的。
由於您實際上正在編寫代碼,因此我認爲您的程序不需要太多關注安全性的開發,所以我會建議您使用/ dev/urandom,以便您的程序不會等待熵的/ dev /隨機的。但是,如果你的程序真的需要安全性......那麼,除非你真的真的知道你在做什麼,否則不要編寫自己的安全相關代碼。例如,閱讀關於「側通道攻擊」的內容。
祝你好運。
相關問題
- 1. 每個用戶和每臺機器都安裝一個MSI?
- 2. .NET PInvoke是否可在Linux和Mac OS X平臺上使用?
- 3. Jenkins從站設置 - 主站和從站都是Linux機器
- 4. Visual Studio許可每個用戶或每臺機器
- 5. SerializationException在一臺機器上,而不在另一臺機器上
- 6. 使用另一臺linux虛擬機訪問虛擬linux機器
- 7. qtsingleapplication在同一臺linux機器上的多個用戶
- 8. 在Linux下分配一臺機器IP
- 9. Sharepoint服務器和Sharepoint基礎都在同一臺機器上運行?
- 10. 是否可以在同一臺機器上使用mysql5.5和mariaDB 10.0?
- 11. 錯誤LGHT0204:ICE57:組件具有每臺機器的每用戶和每臺機器數據KeyPath
- 12. iOS4.2和iOS4.1在同一臺機器上?
- 13. 從一臺linux機器到另一臺linux機器的遠程文件傳輸
- 14. 是否有可能在單臺機器上設置Storm API
- 15. Docker Swarm - 在每臺機器上安排容器
- 16. 在Linux機器上使用PTRACE_SINGLESTEP
- 17. 在linux上編譯一個fortran程序並將可執行文件移動到另一臺linux機器上
- 18. CORBA,在兩臺機器上
- 19. 使用Jenkins將文件從一臺Linux機器複製到另一臺機器
- 20. 默認情況下xdg-open在每個linux發行版上都可用?
- 21. SQLExpress 2005和2008可以安裝在同一臺機器上嗎?
- 22. NoSQL在一臺機器上
- 23. Linux上的塊和libdispatch是否可用?
- 24. 配置OpenMPI在單臺機器上運行(Debian/Linux)
- 25. Ansible在一臺機器上「失去了密碼」但不是另一臺機器
- 26. 是否可以在同一臺機器上爲Windows Phone 8.1和10開發?
- 27. selenium rc在一臺linux服務器上
- 28. 是否有可能獲得另一臺Linux機器的iSCSI啓動器IQN?
- 29. .m文件在linux中的可執行文件在另一臺linux機器上運行
- 30. 是否有可能在一臺主機上運行同一臺機器上的多個MySQL從站?
是的。但'/ dev/random'非常慢,'/ dev/urandom'類似於像'drand48()'這樣的函數。你可以使用'/ dev/random'初始化生成器(通過'srand48()'),然後使用簡單的函數。 –