在Windows上模拟/ dev / random

时间:2012-06-06 11:48:29

标签: python windows linux random

我正试图将python代码从linux移植到Windows。在各个地方,通过从/ dev / random读取来生成随机数。有没有办法在Windows上模拟/ dev / random?

我正在寻找一种能让代码在linux上保持可用的解决方案...

4 个答案:

答案 0 :(得分:13)

如果您使用的是Python,为什么还要关注具体的实现呢?只需使用the random module并让它处理它。

除此之外,(如果你不能依赖软件状态)os.urandom提供基于os的随机值:

  

在类UNIX系统上,这将查询/ dev / urandom,在Windows上查询   将使用CryptGenRandom。

(注意random.SystemRandom为此提供了一个很好的界面。)

如果您非常认真地认为它是加密随机的,您可能需要查看PyCrypto

答案 1 :(得分:7)

您可以致电random.SystemRandom。这将在Windows上使用CryptGenRandom,在Linux上使用/ dev / urandom。

否则,总会有Cygwin的/ dev / random?

答案 2 :(得分:1)

您可以使用Python标准库中的random

答案 3 :(得分:0)

如果安装Cygwin,则

/ dev / random可用。在Cygwin控制台窗口中,您将能够运行以下命令:

tom@myHost ~
$ hexdump -C -n 8 /dev/random
00000000  4f 9d 57 cc 9a 01 aa cb                           |O.W.....|
00000008

并且假设您将Cygwin的bin目录添加到路径中,您也可以在“窗口命令提示符”窗口中运行该命令,但仅在使用Cygwin命令时可以使用。

Microsoft Windows [Version 10.0.18363.778]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\tom>hexdump -C -n 8 /dev/random
00000000  01 99 93 1d 51 f0 dd f4                           |....Q...|
00000008

不知道这是否对您有帮助!我认为您将无法将其用作可以从应用程序内部读取的设备文件,而无需使用以下任何技巧:参见https://www.codeproject.com/articles/66235/interacting-with-shell-applications-made-easy