将 /dev/random 写入文件?

tkb*_*kbx 10 kernel devices random

如果你运行以下,会发生什么?

cat /dev/random > ~/randomFile # don't run
Run Code Online (Sandbox Code Playgroud)

它会被写入直到驱动器空间不足,还是系统会发现这个问题并停止它(就像一个无限的符号链接循环)?

jof*_*fel 22

它写入直到磁盘已满(通常仍有一些空间为 root 用户保留)。但由于随机数据池有限,这可能需要一段时间。

如果您需要一定数量的随机数据,请使用dd. 对于 1MB:

dd if=/dev/random iflag=fullblock of=$HOME/randomFile bs=1M count=1
Run Code Online (Sandbox Code Playgroud)

相关问题的回答中提到了其他可能性。

但是,在几乎所有情况下,最好改用它/dev/urandom。如果内核认为它脱离了熵,它不会阻塞。为了更好地理解,您还可以阅读有关 /dev/urandom 的神话

安装hasged可以加快速度/dev/random并为/dev/urandom.

编辑dd需要该fullblock选项,因为/dev/urandom如果熵池为空, /dev/random (与 相反)可以返回不完整的块。

如果您dd不支持单位,请写出它们:

dd if=/dev/random iflag=fullblock of=$HOME/randomFile bs=1048576 count=1
Run Code Online (Sandbox Code Playgroud)

  • 100 MiB 的高质量随机数据有点多......你应该得到几个字节来播种一些高质量的伪随机数生成器,比如梅森扭曲器。如果应用程序是关键的(在密码学意义上),你_必须_去阅读这个问题,也许聘请专家。 (8认同)
  • @vonbrand 不,从`/dev/urandom` 读取 100MB 很好,没有理由不这样做。并且不要使用梅森扭曲器进行加密。[不要在 Linux 上使用 `/dev/random`](http://security.stackexchange.com/questions/3936/is-a-rand-from-dev-urandom-secure-for-a-login-键/3939#3939)。 (4认同)
  • @jofel:不,`/dev/urandom` 的输出 _is_ 适合加密使用。不要使用`/dev/random`。 (3认同)