2012-06-06 31 views
7

Tôi đang cố gắng chuyển mã python từ linux sang cửa sổ ngay bây giờ. Ở những nơi khác nhau, các số ngẫu nhiên được tạo ra bằng cách đọc từ/dev/random. Có cách nào để mô phỏng/dev/ngẫu nhiên trên Windows?Mô phỏng/dev/ngẫu nhiên trên Windows

Tôi đang tìm kiếm một giải pháp mà có thể giữ mã sử dụng được trên linux ...

+2

Điều này có thể hữu ích: http://stackoverflow.com/questions/191335/windows-equivalent-of-dev-random – pcalcao

+0

Cảm ơn bạn đã phản hồi nhanh! Tôi thấy rằng một đã nhưng tôi muốn tìm một giải pháp mà sẽ giữ mã có thể sử dụng trên Linux. – scherlock

Trả lời

13

Nếu bạn đang sử dụng Python, tại sao bạn quan tâm đến việc triển khai cụ thể? Chỉ cần sử dụng the random module và để cho nó đối phó với nó.

Ngoài ra, (nếu bạn không thể dựa vào trạng thái phần mềm) os.urandom cung cấp os dựa trên các giá trị ngẫu nhiên:

Trên hệ thống UNIX-như thế này sẽ truy vấn/dev/urandom, và trên Windows nó sẽ sử dụng CryptGenRandom.

(Lưu ý rằng random.SystemRandom cung cấp giao diện đẹp cho việc này).

Nếu bạn là thực sự là nghiêm túc về việc bị mã hóa ngẫu nhiên, bạn có thể muốn xem PyCrypto.

1

Bạn có thể sử dụng random từ thư viện chuẩn của Python.

+2

-1. Từ trang được liên kết: "* Misterenne Twister là một trong những máy tạo số ngẫu nhiên được thử nghiệm rộng rãi nhất. Tuy nhiên, hoàn toàn xác định, nó không phù hợp với mọi mục đích, và hoàn toàn không phù hợp với mục đích mã hóa." không phải là một thay thế cho/dev/ngẫu nhiên (mà là mật mã ngẫu nhiên.) – finnw

+1

OP không nói bất cứ điều gì về các mục đích mã hóa, và ngẫu nhiên.SystemRandom (mà là ngẫu nhiên. *) sử dụng os.urandom thích hợp cho mật mã. – Steve

7

Thay vào đó, bạn có thể gọi số random.SystemRandom. Điều này sẽ sử dụng CryptGenRandom trên Windows và/dev/urandom trên Linux.

Nếu không, luôn có Cygwin/dev/random?