2012-06-06 140 views
7

我正在嘗試將Python代碼從linux移植到windows。在不同的地方,通過從/ dev/random讀取生成隨機數。有沒有辦法在Windows上模擬/ dev/random?在Windows上模擬/ dev/random

我在尋找能保持代碼的可使用Linux上的解決方案...

+2

這可能有所幫助:http://stackoverflow.com/questions/191335/windows-equivalent-of-dev-random – pcalcao

+0

感謝您的快速響應!我發現已經有一個,但我想找到一個解決方案,以保持代碼在Linux上可用。 – scherlock

回答

13

如果你使用Python,你爲什麼關心具體的實現?只需使用the random module並讓它處理。

除此之外,(如果你不能依靠軟件狀態)os.urandom提供基於操作系統的隨機值:

在UNIX類系統,這將查詢的/ dev/urandom的,而在Windows上它 將使用CryptGenRandom。

(請注意,random.SystemRandom爲此提供了一個很好的界面)。

如果你是確實認真對待它是加密隨機的,你可能想看看PyCrypto

1

你可以使用從Python的標準庫random

+2

-1。從鏈接頁面:「* Mersenne Twister是存在的最廣泛測試的隨機數生成器之一,但是,它是完全確定性的,它不適合所有目的,並且完全不適合加密目的。不是對/ dev/random(這是加密隨機的)的替代。 – finnw

+1

OP沒有說關於加密目的的任何內容,而random.SystemRandom(它是隨機的。*)使用適合加密的os.urandom。 – Steve