如何在 PC 上提供 RANDOM 和 URANDOM 的后继者 SRANDOM?

如何在 PC 上提供 RANDOM 和 URANDOM 的后继者 SRANDOM?

SRANDOM 是随机性更强的 RANDOM 的替代品。SRANDOM 于 2020 年底首次发布。此外,SRANDOM 可用于比 RANDOM 更大的计数范围。SRANDOM 附带 Bash-5.1

所以问题是,如何更新到 bash 5.1 或通过其他方式获得 SRANDOM 支持?

随机的:

  • 16 位
  • 创建分布不太均匀的数据

随机:

需要安装或更新什么才能使 SRANDOM 在 Ubuntu 的 konsole 上可用,以及如何安装或更新?

作为将来不再运行 bash 5.1 的系统的替代方案,如何在 bash 脚本或终端上获取并运行 SRANDOM 实现的 C 代码?

答案1

SRANDOM 的源代码可在此处获取https://github.com/josenk/srandom并且您应该能够在内核为 3.10 或更高版本的 Linux 上安装。

先决条件

如果您从事开发或 DevOps,那么您可能已经拥有它们了。

sudo apt install git make 

下载

来源

mkdir your-srandom-source-code-dir
cd your-srandom-source-code-dir
git init
git clone https://github.com/josenk/srandom

安装

此处列出的组合手册https://github.com/josenk/srandom#compile-and-installation- 但这里有一个包括安装先决条件包的简单示例:

sudo apt update && sudo apt install kernel-devel

cd your-srandom-source-code-dir
make
make install

使用

您可以将 SRANDOM 用作一个包含所需随机数据的无限文件,例如,您可以将其用作 dd 的数据源。但请避免使用不限制读取数据量的命令(如“cat”),因为这可能会导致性能问题。

dd if=/dev/srandom count=1 bs=1M of=random-output.txt

答案2

在仍然不支持 SRANDOM 的系统上,您可以使用以下命令作为 RANDOM 的更好替代方案,直到您的系统支持 SRANDOM:

rnd="$((0x$(dd if=/dev/urandom of=/dev/stdout bs=4 count=1 status=none | xxd -p)))"

如果可以的话,SRANDOM 会更快。

另一个替代方案是:

my_rnd=$(openssl rand 4 | od -DAn)

答案3

在仍然不支持 SRANDOM 的系统上,您可以按照如下方式构建自己的随机替换:

srandom() {
   # should be random number from /dev/urandom
   # we take 4 bytes - one number 2^32
   echo "$((0x$(dd if=/dev/urandom of=/dev/stdout bs=4 count=1 status=none | xxd -p)))"
}

答案4

您可以通过应用程序管理、synaptics 进行安装,或者按照下列方式安装随机支持 bash 5.1 pe:

获得http://ftp.gnu.org/gnu/bash/bash-5.1.tar.gz

tar xf bash-5.0.tar.gz

cd bash-5.1

./配置 make

安装

相关内容