如何使用 /dev/(u)random

Can*_*maz 42 bash kernel

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

我试过这个,但它说许可被拒绝。
注意:我也以 root 身份尝试过。

/dev/(u)random
sudo /dev/(u)random
sudo -s; /dev/(u)random
Run Code Online (Sandbox Code Playgroud)

ayc*_*dee 70

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

dd if=/dev/urandom of=~/urandom_test count=4 bs=1024
Run Code Online (Sandbox Code Playgroud)

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

cat /dev/urandom > ~/urandom_test2 
Run Code Online (Sandbox Code Playgroud)

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

head -30 /dev/urandom > ~/urandom_test3
Run Code Online (Sandbox Code Playgroud)

将写入 30 行随机字节

  • 如果我的代表> 15,我会 (5认同)
  • 请注意,`/dev/urandom` 限制为每个 `read()` 32 MiB,并且一旦 `/dev/urandom` 产生这 32 MiB,`dd` 将不会重试读取更多内容,因此您必须调用 `dd` `iflag=fullblock`。请参阅 [dd 正在生成 32 MB 的随机文件而不是 1 GB](https://superuser.com/q/1388082/418028) (3认同)
  • 那就赶紧点赞吧! (2认同)
  • 注意:不要在低性能系统上执行 cat /dev/urandom > ~/urandom_test2 -> 这会冻结系统 (2认同)

Vol*_*gel 22

获取随机字节

如果您需要一定数量的随机字节,请从/dev/urandom.
它是一个“特殊文件”,就像一个可以从中读取随机数的文件。

使用catto read from/dev/urandom是一个坏主意,因为它会尝试读到/dev/urandom最后 - 但它不会结束。

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

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

head -c 30 /dev/urandom > random.bytes
Run Code Online (Sandbox Code Playgroud)

您可以作为普通用户阅读它。

不用管/dev/random

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

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

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


Ser*_*raf 7

如果您只想使用可识别的数字阅读它,您可以这样做

od -d /dev/random
Run Code Online (Sandbox Code Playgroud)


小智 6

我个人用它来生成令牌:

dd if=/dev/urandom  count=1 bs=128 | sha512sum
Run Code Online (Sandbox Code Playgroud)