2012-06-06 13 views
7

Estoy tratando de portar el código python de linux a windows en este momento. En varios lugares, los números aleatorios se generan leyendo desde/dev/random. ¿Hay alguna forma de simular/dev/random en Windows?Simulando/dev/random en Windows

Busco una solución que mantener el código utilizable en Linux ...

+2

Esto podría ayudar: http://stackoverflow.com/questions/191335/windows-equivalent-of-dev-random – pcalcao

+0

¡Gracias por la respuesta rápida! Ya lo encontré pero me gustaría encontrar una solución que mantenga el código utilizable en Linux. – scherlock

Respuesta

13

Si está utilizando Python, ¿por qué le importa la implementación específica? Solo use the random module y deje que se ocupe de ello.

Más allá de eso, (si no se puede confiar en estado de software) os.urandom proporciona valores aleatorios basados ​​en el SO:

En un sistema UNIX-como esto va a consultar/dev/urandom, y que en Windows usará CryptGenRandom.

(Tenga en cuenta que random.SystemRandom proporciona una buena interfaz para esto).

Si usted es realmente serio acerca de que sea criptográficamente aleatorio, es posible que desee comprobar PyCrypto.

1

Usted podría utilizar random de la biblioteca estándar de Python.

+2

-1. Desde la página enlazada: "* El Mersenne Twister es uno de los generadores de números aleatorios más probados que existen. Sin embargo, al ser completamente determinista, no es adecuado para todos los propósitos, y es completamente inadecuado para fines criptográficos. *" Así es no es un sustituto de/dev/random (que es criptográficamente aleatorio). – finnw

+1

OP no dice nada sobre los propósitos criptográficos, y random.SystemRandom (que está en random. *) usa os.urandom que es adecuado para crypto. – Steve