7

我现在正在尝试将 python 代码从 linux 移植到 windows。在不同的地方,随机数是通过读取 /dev/random 生成的。有没有办法在 Windows 上模拟 /dev/random?

我正在寻找一种可以使代码在 linux 上可用的解决方案...

4

4 回答 4

13

如果您使用的是 Python,为什么要关心具体的实现?只需使用模块random让它处理它。

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

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

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

如果你真的很想它是加密随机的,你可能想看看PyCrypto

于 2012-06-06T11:53:57.777 回答
7

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

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

于 2012-06-06T11:54:29.103 回答
1

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

于 2012-06-06T11:53:16.833 回答
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 目录添加到您的路径中,您也可以在 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

于 2020-04-30T20:15:45.920 回答