如何将类似于 /dev/urandom 的 Python PRNG 脚本中的数据传输到 Dieharder



我创建了一个伪随机数生成器,我正在尝试传输出类似于有人运行的数据"$ cat/dev/urandom/"具体来说,我正在尝试将数据传输到更糟糕的 RNG 测试套件。

通常,从随机到死硬的阅读看起来像"$ cat/dev/urandom |Diehard -A -G 200">

我的程序旨在无限生成数字并将它们输出为 main:

def main():
 ... # setup and variables
    for _ in iter(int,1): # infinite loop
        PRNG_VAL = PRNG_FUNC(count_str,pad,1) # returns b'xx'
        PRNG_VAL = int(PRNG_VAL,16) # returns integer
        sys.stdout.write(chr(PRNG_VAL)) # integer to chr, similar to /dev/urandom type output

显然,当我运行类似的东西时"$ 猫 ./top.py |死难..."生成的输出只是对文件内容的读取。

我如何运行文件并将输出通过管道传输到 diehard,而不是读取 'top.py' 的内容,类似于从/dev/urandom 读取?

任何帮助不胜感激!

我如何而不是读取"top.py"的内容,而是运行文件并将输出通过管道传输到更顽固的......

sh 和大多数其他 POSIX shell 中,您以与通常运行它相同的方式运行它,并对其进行管道传输(与管道传输 cat 输出的方式相同(:

./top.py | dieharder

。或:

python top.py | dieharder

使用 cat /dev/urandom 的原因是urandom不是一个程序,而是一个文件。当然,它不是磁盘上充满字节的常规文件,它是一个特殊的设备文件,由设备驱动程序创建并通过mknod挂载,但您不必担心(除非您想编写自己的设备驱动程序(;它就像是一个充满字节的常规文件一样。你不能轻易地做同样的事情,但你不必这样做。


您应该阅读有关基本 shell 脚本的好教程。我没有推荐的,但我相信有很多。

最新更新