参考书籍:《Linux Shell核心编程指南》——丁明一

一、使用命令生成

[root@localhost ~]# uuidgen		#生成16进制随机字符串
0a7beba9-cb04-4ca0-b303-7a3094e180b7
[root@localhost ~]# date +%s	#1970-1-1到当前的秒数
1621759272
[root@localhost ~]# openssl rand -hex 1		#生成1个字节的16进制随机字符串
78
[root@localhost ~]# openssl rand -hex 3		#生成3个字节
72ade0

[root@localhost ~]# openssl rand -base64 1	#生成含特殊符号的随机字符串
wg==
[root@localhost ~]# openssl rand -base64 6
26slWV1m

注意:使用base64算法生成的随机数据,最终长度为(n/3)向上取整再乘以4.
如(1/3)=0.333,向上取整为1,最终编码长度为1 x 4=4位
(6/3)=2,向上取整为2,最终编码长度为2 x 4=8位

[root@localhost ~]# echo abc123 | openssl passwd -stdin		#对明文加密生成随机
OxQMpdTw/34WU

二、使用设备文件生成

可以通过/dev/random和/dev/urandom提供随机数,建议使用/dev/urandom

提取8位包含字母、数字、下划线的随机数

[root@localhost ~]# tr -cd '_a-zA-Z0-9' < /dev/urandom | head -c 8
c5VkRl_H[root@localhost ~]#

tr用法参考文章Linux命令大全(入门必备)

三、通过Hash值生成随机数据

[root@localhost ~]# md5sum /etc/passwd | awk '{print $1}'
6322f6fcbc6e157963f5aa74f9e35039

四、使用进程号生成随机数

touch /tmp/$$.tmp

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐