文章目录
- 一、使用命令生成
- 二、使用设备文件生成
- 三、通过Hash值生成随机数据
- 四、使用进程号生成随机数
参考书籍:《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
更多推荐
Shell生成随机数
发布评论