在編程中通常為了增強(qiáng)安全性,會要求生成一些隨機(jī)字符串切黔,例如密碼。這里簡單介紹下6種隨機(jī)生成方法:
方法1:通過系統(tǒng)環(huán)境變量($RANDOM)實(shí)現(xiàn)
[root@test01 ~]# echo "TEST$RANDOM"|md5sum|cut -c 1-11
59bfe7c102d
# \$RANDOM 產(chǎn)生0~32767 隨機(jī)數(shù)凌埂,再通過 MD5加密 诗芜,之后隨機(jī)截取部分長度字段,增強(qiáng)復(fù)雜性
方法2:通過/dev/urandom配合chksum生成隨機(jī)數(shù)
# /dev/random設(shè)備存儲著系統(tǒng)當(dāng)前運(yùn)行環(huán)境的實(shí)時(shí)數(shù)據(jù)
[root@test01 ~]# head /dev/urandom|cksum
3747548380 2545
[root@test01 ~]# head /dev/urandom|cksum
2711436708 2739
方法3:通過openssl產(chǎn)生隨機(jī)數(shù) 比較常用 绢陌,通常生成一定長度字符串配合sed 命令過濾出需要的字符
[root@test01 ~]# openssl rand -base64 8
LYZVa7pOHSs=
[root@test01 ~]# openssl rand -base64 8|sed -r "s#[^a-z]##g"
cpjzqw
方法4:通過時(shí)間(date)獲得隨機(jī)數(shù),示例代碼如下
[root@test01 ~]# date +%s%N
1652370810059577808
方法5:通過UUID生成隨機(jī)數(shù)臭笆,UUID碼全稱是通用唯一識別碼(Universally Unique Identifier, UUID)目的是讓分布式系統(tǒng)中的所有元素都能有唯一的辨識信息秤掌。通常也需要搭配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,通常需要先執(zhí)行“yum install expect -y”命令安裝
[root@test01 ~]# mkpasswd -l 9 -d 2 -c 3 -C 3 -s 1|md5sum|cut -c 2-10
41d8cd98f
以上6種方法是日常獲取隨機(jī)數(shù)常用的茵乱,一般為了保持相同長度孟岛,需要搭配cut 命令進(jìn)行截取目標(biāo)長度字符