我想看看我是否可以使用我的 raspberry pi 的硬件 RNG作为/dev/random. 主要是看我是否可以让它工作,并为这个漂亮的小设备找到另一个用途。当然,我真的不需要增加笔记本电脑的熵。然而,一个有用的应用程序可能是将其用作具有 VM 的服务器的熵源,其中熵创建可能是一个问题。然而,它主要是一个爱好项目,看看我是否可以让它工作并回馈开源社区。
我想做的是在(本地)网络上设置我的 pi 并使用 ssh 将随机性传输到服务器池,在这种情况下是我的笔记本电脑。我认为只使用/dev/random从 pi读取的 bash 脚本应该没有问题。但是如何将/dev/randompi 的连接到/dev/random我的笔记本电脑的 。是否有添加随机数生成器的接口。
我希望我提出的设置很清楚。我希望我能得到一些评论,欢迎任何反馈。
如果我有类似的东西:
echo 1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
或者
echo man woman child
Run Code Online (Sandbox Code Playgroud)
我必须在管子后面放什么才能挑出1 2 3 4 5 6或 的一个元素man woman child?
echo 1 2 3 4 5 6 | command
3
Run Code Online (Sandbox Code Playgroud) 首先,我们知道如何从 txt 文件中输出随机行:
perl -MList::Util -e 'print List::Util::shuffle <>' words.txt
Run Code Online (Sandbox Code Playgroud)
但是我们需要一个通用的解决方案(perl通常安装在每个类unix的操作系统上)从txt文件中输出4个随机单词,我们该怎么做?
$ cat words.txt
...
alpha
beta
gamma
delta
epsilon
...
$
Run Code Online (Sandbox Code Playgroud)
“...”代表许多其他词。
示例输出(它们之间没有换行符,但最后需要一个 unix 换行符,空格应该将它们分开):
$ perl SOMEMAGIC words.txt
gamma alpha delta beta
$
Run Code Online (Sandbox Code Playgroud)
仅使用 perl,最短的解决方案 (oneliner)。
它将用作人类难忘的密码生成器:https : //xkcd.com/936/
由于 afaik perl 足以被命名为“随机生成器”。
具有 32768 行唯一行的常见英语单词表示例:https : //pastebin.ubuntu.com/23726760/
我的系统(Linux 4.13.0-38-generic,16.04.1-Ubuntu,Intel® Celeron(R) CPU G3930 @ 2.90GHz × 2,主磁盘是 SSD)上的“熵创建”速度是不切实际的慢很多每秒小于 1 位。
注意:我用这个命令判断熵产生的速率:
watch -n1 cat /proc/sys/kernel/random/entropy_avail
Run Code Online (Sandbox Code Playgroud)
另一方面,底层 Linux CSPRNG 正在以每秒 187 Mb 的良好速度生成数据:
$ dd if=/dev/urandom of=/dev/null bs=1M count=1024 iflag=fullblock
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.74347 s, 187 MB/s
Run Code Online (Sandbox Code Playgroud)
我安装了rng-tools. 它正在/dev/hwrng按预期工作和阅读:
% systemctl status rng-tools
? rng-tools.service
Loaded: loaded (/etc/init.d/rng-tools; bad; vendor preset: enabled)
Active: active (running) since Sat 2018-04-28 13:17:17 PDT; 33s ago
Docs: man:systemd-sysv-generator(8)
Process: …Run Code Online (Sandbox Code Playgroud) 我正在使用 AWK 生成 1 - 6 之间的值,这些值需要以随机顺序出现。我设法理清了创建正确数字范围的逻辑,但正在努力将它们读入数组以防止输出重复的数字。目前我的代码有这个;-
BEGIN{
FS=""
}{
for (i=1; i<=6; ++i) {
v=(int (rand()*6)+1
print v }
Run Code Online (Sandbox Code Playgroud)
这当前输出六个数字,但显示重复 2, 2, 6, 1, 4, 2. 我需要输出的是类似 1, 4, 2, 5, 6, 3
任何人都可以为我的 AWK 程序帮助解决这个数组方面的问题吗?
非常感谢
我正在编写一个程序,我将为其创建一个脚本来生成特定格式的测试数据。
/dev/myprogram工作方式类似于的设备/dev/random(最好在 的子目录中/dev/,例如/dev/test/myprogram:)?我正在使用 Ubuntu 14.04,尽管我正在寻找一个适用于任何 *nix 系统的通用答案。
在 Solaris 中生成随机数的最佳方法是什么?
我似乎无法为此找到一个好的答案。大多数结果在我的环境中不起作用。有一个变量或命令 RAND 看起来很合乎逻辑,它会以某种类似于 $RANDOM 的方式工作,我在大多数搜索中看到它,但它总是产生 0。
我找到了这个命令
od -X -A n /dev/random | head -2
Run Code Online (Sandbox Code Playgroud)
这看起来很随机,但返回格式很奇怪(对我来说)。
140774 147722 131645 061031 125411 053337 011722 165106
066120 073123 040613 143651 040740 056675 061051 015211
Run Code Online (Sandbox Code Playgroud)
目前使用:
-bash-3.2$ uname -a
SunOS XXXXXXXXX 5.10 Generic_150400-29 sun4v sparc SUNW,SPARC-Enterprise-T5120
Run Code Online (Sandbox Code Playgroud) 我有一个格式如下的文件:
train/t/temple/east_asia/00000025.jpg 94
train/t/temple/east_asia/00000865.jpg 94
...
train/s/swamp/00000560.jpg 92
train/s/swamp/00000935.jpg 92
....
train/m/mountain/00000428.jpg 68
train/m/mountain/00000126.jpg 68
Run Code Online (Sandbox Code Playgroud)
最后一个数字是班级编号。我有 50 个不同的类,每个类有 1000 行。我想从每个类中随机抽取一个大小为 N 的样本,并将结果存储在另一个文本文件中。
我正在尝试生成一个逗号分隔的1 到 10 之间整数的无序列表,我尝试了以下操作,但结果是一个有序列表:
seq -s "," 10 | shuf
Run Code Online (Sandbox Code Playgroud) 系统是:
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
Run Code Online (Sandbox Code Playgroud)
在生成一些随机数时,我观察到 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:~ $ …Run Code Online (Sandbox Code Playgroud) random ×10
awk ×2
shell ×2
bash ×1
command-line ×1
devices ×1
linux ×1
linux-kernel ×1
numeric-data ×1
perl ×1
raspberry-pi ×1
sed ×1
shell-script ×1
solaris ×1