Rpi Buster 上 RANDOM 和 URANDOM 的不同行为

Rpi Buster 上 RANDOM 和 URANDOM 的不同行为

系统是:

pi@titania:~ $ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

pi@titania:~ $ uname -a
Linux titania.####.net 5.10.103-v7l+ #1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l GNU/Linux

在生成一些随机数时,我观察到 RANDOM 和 URANDOM 之间存在不同的行为。以机智:

pi@titania:~ $ echo $URANDOM | md5sum | head -c 20; echo;
68b329da9893e34099c7

pi@titania:~ $ echo $URANDOM | md5sum | head -c 20; echo;
68b329da9893e34099c7

pi@titania:~ $ echo $URANDOM | md5sum | head -c 20; echo;
68b329da9893e34099c7

pi@titania:~ $ echo $RANDOM | md5sum | head -c 20; echo;
a5355860c5367e0dc179

pi@titania:~ $ echo $RANDOM | md5sum | head -c 20; echo;
521938e64c42075b2b92

pi@titania:~ $ echo $RANDOM | md5sum | head -c 20; echo;
03505fd360ab7ae8378d

URANDOM 以确定性方式生成相同的输出,而 RANDOM 则不然,每次返回的结果都与预期不同。

我有点想尽可能使用 URANDOM,所以这激起了我的兴趣。

有人知道为什么会出现这种差异吗?

约翰·施普林格

答案1

您的$URANDOM变量为空:

$ echo '' | md5sum | head -c 20; echo;
68b329da9893e34099c7

RANDOM我认为您对 bash 变量(来自)感到困惑man bash

      RANDOM Each time this parameter is referenced, it expands to a  random
              integer  between 0 and 32767.  Assigning a value to RANDOM ini‐
              tializes (seeds) the sequence of random numbers.  If RANDOM  is
              unset,  it  loses  its special properties, even if it is subse‐
              quently reset.

虽然bash其他各种 shell 都提供RANDOM内置变量,但我不知道有哪个 shell 也有类似的名为URANDOM.您还没有告诉我们您正在使用什么 shell,但根据您显示的输出,您的 shell 也不提供它,因此您所做的只是回显空字符串。

我怀疑您实际上正在考虑/dev/random/dev/urandom,这是完全不同的事情。您可能想阅读其中一些内容:

相关内容