我现在正在尝试将 python 代码从 linux 移植到 windows。在不同的地方,随机数是通过读取 /dev/random 生成的。有没有办法在 Windows 上模拟 /dev/random?
我正在寻找一种可以使代码在 linux 上可用的解决方案...
如果您使用的是 Python,为什么要关心具体的实现?只需使用模块random
并让它处理它。
除此之外,(如果你不能依赖软件状态)os.urandom
提供基于操作系统的随机值:
在类 UNIX 系统上,这将查询 /dev/urandom,而在 Windows 上,它将使用 CryptGenRandom。
(请注意,它为此random.SystemRandom
提供了一个很好的界面)。
如果你真的很想它是加密随机的,你可能想看看PyCrypto。
您可以改为调用random.SystemRandom。这将在 Windows 上使用CryptGenRandom,在 Linux 上使用 /dev/urandom。
否则,总是有 Cygwin 的 /dev/random?
您可以使用Python 标准库中的random。
如果您安装 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 目录添加到您的路径中,您也可以在 Window Command Prompt 窗口中运行该命令,但它只能使用 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