2012-06-06 14 views
7

Sto provando a portare il codice Python da Linux a Windows adesso. In vari luoghi i numeri casuali vengono generati leggendo da/dev/random. C'è un modo per simulare/dev/random su Windows?Simulazione/dev/random su Windows

Sto cercando una soluzione che avrebbe mantenuto il codice utilizzabile su linux ...

+2

Questo potrebbe aiutare: http://stackoverflow.com/questions/191335/windows-equivalent-of-dev-random – pcalcao

+0

Grazie per la rapida risposta! L'ho già trovato, ma mi piacerebbe trovare una soluzione che mantenga il codice utilizzabile su Linux. – scherlock

risposta

13

Se si utilizza Python, perché si preoccupa dell'implementazione specifica? Basta usare the random module e lasciarlo gestire.

di là di questo, (se non si può fare affidamento sullo stato del software) os.urandom fornisce os-basati valori casuali:

Su un sistema UNIX-like questo interroga/dev/urandom, e su Windows esso utilizzerà CryptGenRandom.

(Notare che random.SystemRandom fornisce un'interfaccia piacevole per questo).

Se siete veramente sul serio che sia crittograficamente casuale, si potrebbe desiderare di controllare PyCrypto.

1

Si potrebbe usare random dalla libreria standard di Python.

+2

-1. Dalla pagina collegata: "* Il Mersenne Twister è uno dei generatori di numeri casuali più ampiamente testati esistenti, tuttavia, essendo completamente deterministico, non è adatto a tutti gli scopi, ed è completamente inadatto per scopi crittografici. *" Così è non un sostituto di/dev/random (che è crittograficamente casuale.) – finnw

+1

OP non ha detto nulla a proposito di scopi crittografici, e random.SystemRandom (che è in ordine casuale. *) utilizza os.urandom che è adatto per crypto. – Steve