如何使用/ dev /(u)random


32

如何/dev/(u)random在Ubuntu或任何* nix系统上使用?

我尝试了此操作,但它表示拒绝权限。
注意:我也以root用户身份尝试过。

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random

2
请注意,仅当您确实需要高质量的随机数据时才应使用这些命令,通常是为了创建良好的密码。否则,会有更多轻量级的替代方案,例如shell环境“ variable” RANDOM以创建随机正整数:echo $RANDOM,以及shuf生成随机排列的程序,例如从播放列表中按随机顺序播放。
sudodus

Answers:


54

这是一个类似于设备的文件,因此您可以执行cat或从中复制之类的操作。例如:

dd if=/dev/urandom of=~/urandom_test count=4 bs=1024

创建一个包含4K随机字节的文件。

cat /dev/urandom > ~/urandom_test2 

将继续向该文件中写入随机字节,直到您按Ctrl-C。不要在性能低下的系统上执行此操作...

head -30 /dev/urandom > ~/urandom_test3

将写入30行随机字节


1
请随时投票!
aychedee 2012年

5
如果我的代表> 15
Caner Korkmaz 2012年

1
注意:不要在低性能的系统上执行cat / dev / urandom>〜/ urandom_test2->冻结系统
Caner Korkmaz

1
嗯..这实际上取决于您对线的定义。我的定义是bytes terminated by a \n。你的是啥呢?head -30 /dev/urandom将为您提供30行随机字节。这些行的长度肯定是随机的。wc -l如果不确定,请尝试在输出文件上运行。
阿耶德尼(Aychedee)

3
需要注意的是/dev/urandom限制为32 MIB每read()dd不会重试多读一次/dev/urandom产量的32 MIB,所以你要打电话ddiflag=fullblock。看到dd产生的是32 MB随机文件,而不是1 GB
Sergiy Kolodyazhnyy 18/12/28

14

获取随机字节

如果您需要一定数量的随机字节,请从中读取该字节数/dev/urandom
这是一个“特殊文件”,类似于读取随机数的文件。

使用 cat读取/dev/urandom是一个坏主意,因为它将尝试读取/dev/urandom到结尾-但它不会结束。

您可以使用head。但是要注意按字节读取,而不要按行读取-因为行将被随机的换行字节随机分隔。

因此,要将30个随机字节读入文件random.bytes,请使用:

head -c 30 /dev/urandom > random.bytes

您可以以普通用户的身份阅读。

不理会/ dev / random

通常,您要使用/dev/urandom,而不是/dev/random

问题是 /dev/random很难以正确的方式使用-并且容易以错误的方式使用。起初使用错误会起作用,但后来会产生奇怪的-甚至随机的性能问题。有时。

当您使用时/dev/urandom,它会在/dev/random内部使用并处理棘手的部分。


4

如果您只想阅读带有识别号码的书,可以这样做

od -d /dev/random

0

我个人将其用于生成令牌:

dd if=/dev/urandom  count=1 bs=128 | sha512sum
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.