在Linux系统中生成随机数的命令有很多,本文在centos7的环境下进行测试。

1 系统环境变量$RANDOM

利用$RANDOM可以产生0-32767的随机数
##数字
[root@m01 scripts]# echo $RANDOM
28950
[root@m01 scripts]# echo $RANDOM
31705
[root@m01 scripts]# echo $RANDOM
2963
[root@m01 scripts]# echo $RANDOM
25648

可以给生成的随机数增加一个字符串进行加密的方式,提高安全性。
##数字和小写字母
[root@m01 scripts]# echo "NBA$RANDOM"|md5sum
5550d5dd74d2f8d18909035dd98a8ace  -

执行md5sum操作后截取第3到第6位
[root@m01 scripts]# echo "NBA$RANDOM"|md5sum|cut -c 3-6
71bb

2 openssl

##数字、大小写字母、特殊符号
[root@m01 scripts]# openssl rand -base64 5
8gt2B2U=
[root@m01 scripts]# openssl rand -base64 20
tI6GBDAyoY7qRYPltpKzktD3SMY=
[root@m01 scripts]# openssl rand -base64 60
rraPXjKSTPznEeulq+X12vfK9+nGnrIGqjr6g5NzkEkfKoBHhfDqRgNoiapY2kAD
qdxN/ujT/19ONo5J

3 date

##数字
[root@m01 scripts]# date +%s%N
1656042134758980030
[root@m01 scripts]# date +%s%N
1656042135444250409
[root@m01 scripts]# date +%s%N
1656042136003358211

4 /dev/urandom 和 /dev/random

##数字
[root@m01 scripts]# head /dev/urandom|cksum
1608246532 2128
[root@m01 scripts]# head /dev/urandom|cksum
4093373365 2038
[root@m01 scripts]# head /dev/urandom|cksum
3837620846 3213
特点/dev/urandom/dev/random
随机性不保证保证
速度
资源占用非阻塞占用进程

5 UUID

UUID,通用识别唯一码。
让分布式系统的所有元素有唯一的辨识信息。

##数字、小写字母
[root@m01 scripts]# cat /proc/sys/kernel/random/uuid 
f381f873-8337-4b30-9420-c40f8f81c892
[root@m01 scripts]# cat /proc/sys/kernel/random/uuid 
e1e06e27-d14b-4ab4-a59e-6f00ff6057e5
[root@m01 scripts]# cat /proc/sys/kernel/random/uuid 
23896158-f96f-4860-a598-fcc966a1ecf3

6 mkpasswd

expect数据包中的mkpasswd命令,因此要先安装expect
yum install -y expect

[root@m01 scripts]# mkpasswd -l 10 -d 4 -c 3 -C 2 -s 1
2eQ>d000rN
[root@m01 scripts]# mkpasswd -l 10 -d 4 -c 3 -C 2 -s 1
9aANp+d931
[root@m01 scripts]# mkpasswd -l 10 -d 4 -c 3 -C 2 -s 1
OM663px,r4

-l 10 长度为10个字符
-d 4  4个数字
-c 3  3个小写字母
-C 2  2个大写字母
-s 1  1个特殊字符 

补充说明

上述所有命令都可以用md5sum统一长度

[root@m01 scripts]# echo "NBA$RANDOM"|md5sum|cut -c 4-10
7ec1287
[root@m01 scripts]# openssl rand -base64 60|md5sum|cut -c 4-10
b20f06a
[root@m01 scripts]# date +%s%N|md5sum|cut -c 4-10
6045b63
[root@m01 scripts]# head /dev/urandom|cksum|md5sum|cut -c 4-10
1c84ff9
[root@m01 scripts]# cat /proc/sys/kernel/random/uuid|md5sum|cut -c 4-10
f82f7de
[root@m01 scripts]# mkpasswd -l 10 -d 4 -c 3 -C 2 -s 1|md5sum|cut -c 4-10
932f97b
Logo

更多推荐