在编程中通常为了增强安全性,会要求生成一些随机字符串,例如密码。这里简单介绍下6种随机生成方法:
方法1:通过系统环境变量($RANDOM)实现
[root@test01 ~]# echo "TEST$RANDOM"|md5sum|cut -c 1-11
59bfe7c102d
# \$RANDOM 产生0~32767 随机数,再通过 MD5加密 ,之后随机截取部分长度字段,增强复杂性
方法2:通过/dev/urandom配合chksum生成随机数
# /dev/random设备存储着系统当前运行环境的实时数据
[root@test01 ~]# head /dev/urandom|cksum
3747548380 2545
[root@test01 ~]# head /dev/urandom|cksum
2711436708 2739
方法3:通过openssl产生随机数 比较常用 ,通常生成一定长度字符串配合sed 命令过滤出需要的字符
[root@test01 ~]# openssl rand -base64 8
LYZVa7pOHSs=
[root@test01 ~]# openssl rand -base64 8|sed -r "s#[^a-z]##g"
cpjzqw
方法4:通过时间(date)获得随机数,示例代码如下
[root@test01 ~]# date +%s%N
1652370810059577808
方法5:通过UUID生成随机数,UUID码全称是通用唯一识别码(Universally Unique Identifier, UUID)目的是让分布式系统中的所有元素都能有唯一的辨识信息。通常也需要搭配sed或其它命令过滤特殊字符
[root@test01 ~]# cat /proc/sys/kernel/random/uuid
30c4e4e0-8c1a-4743-b518-5dc18f56a752
[root@test01 ~]# cat /proc/sys/kernel/random/uuid|sed -r "s/-//g"
f2d131d87f244808bf7127a3ca22d766
方法6:mkpasswd,通常需要先执行“yum install expect -y”命令安装
[root@test01 ~]# mkpasswd -l 9 -d 2 -c 3 -C 3 -s 1|md5sum|cut -c 2-10
41d8cd98f
以上6种方法是日常获取随机数常用的,一般为了保持相同长度,需要搭配cut 命令进行截取目标长度字符