我正试图将python代码从linux移植到Windows。在各个地方,通过从/ dev / random读取来生成随机数。有没有办法在Windows上模拟/ dev / random?
我正在寻找一种能让代码在linux上保持可用的解决方案...
答案 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)
/ 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