方法一:
通過(guò)系統(tǒng)環(huán)境變量($RANDOM)實(shí)現(xiàn):
[root@web01 david]# echo $RANDOM
9236
[root@web01 david]# echo $(($RANDOM+11111111))
11128230
[root@web01 david]# echo $(($RANDOM+22222222))
22238612
[root@web01 david]# echo $(($RANDOM+45645689))
45648816
RANDOM的隨機(jī)數(shù)范圍為0-32767贱勃,因此,加密性不是很好,可以通過(guò)在隨機(jī)數(shù)后增加加密字符串(就是和密碼生成有關(guān)的字符串)的方式解決,最后再一起執(zhí)行md5sum操作并截取結(jié)果的后n位淆两,這樣一來(lái)浅蚪,就無(wú)法根據(jù)隨機(jī)范圍0-32767猜出具體結(jié)果了劲厌。
示例:
[root@test ~]# echo "$RANDOM"|md5sum|cut -c 5-15
4eaf70019cc
方法二:
通過(guò)openssl產(chǎn)生8位隨機(jī)數(shù),示例:
[root@web01 david]# openssl rand -base64 8
giKvexw0VXo=
令數(shù)字與大小寫字符相結(jié)合仇矾,并帶上特殊字符坎吻,可以達(dá)到很長(zhǎng)的位數(shù),這樣的隨機(jī)數(shù)很安全揪荣。
方法三:
通過(guò)時(shí)間(date)獲取隨機(jī)數(shù)筷黔,示例:
[root@web01 david]# date +%s%N
1561778055521886139
[root@web01 david]# date +%s%N
1561778057417827462
方法四:
通過(guò)/dev/urandom配合chksum生成隨機(jī)數(shù):
[root@web01 david]# head /dev/urandom|cksum
1400149309 2720
[root@web01 david]# head /dev/urandom|cksum
1664147293 2773
/dev/random設(shè)備存儲(chǔ)著系統(tǒng)當(dāng)前運(yùn)行環(huán)境的實(shí)時(shí)數(shù)據(jù)。它可以看作系統(tǒng)在某個(gè)時(shí)候的唯一值仗颈,因此可以用作隨機(jī)元數(shù)據(jù)佛舱。我們可以通過(guò)文件讀取的方式,讀到里面的數(shù)據(jù)挨决。/dev/urandom這個(gè)設(shè)備的數(shù)據(jù)與random里的一樣请祖。只是,它是非阻塞的隨機(jī)數(shù)發(fā)生器脖祈,讀取操作不會(huì)產(chǎn)生阻塞肆捕。
方法五:
通過(guò)UUID生成隨機(jī)數(shù),示例:
[root@web01 david]# cat /proc/sys/kernel/random/uuid
4cefb900-29ce-4515-88c4-7773d2aaa93d
[root@web01 david]# cat /proc/sys/kernel/random/uuid
c8f47170-b5a6-4c0a-a0ce-5900fa8692fc
UUID碼全稱是通用唯一識(shí)別碼(Universally Unique Identifier,UUID)它是一個(gè)軟件建構(gòu)的標(biāo)準(zhǔn),亦為自由軟件基金會(huì)的組織在分布式計(jì)算環(huán)境領(lǐng)域的一部分;
UUID的目的是讓分布式系統(tǒng)中的所有元素都能有唯一的辨別信息,而不需要通過(guò)中央控制端來(lái)做辨別信息的指定盖高,如此一來(lái)慎陵,每個(gè)人都可以創(chuàng)建不與其他人發(fā)生沖突的UUID,在這種情況下喻奥,就不需要考慮數(shù)據(jù)庫(kù)創(chuàng)建時(shí)的名稱重復(fù)問(wèn)題了席纽,它會(huì)讓網(wǎng)絡(luò)中任何一臺(tái)計(jì)算機(jī)所生成的UUID碼都是互聯(lián)網(wǎng)整個(gè)服務(wù)器網(wǎng)路中唯一的編碼。它的原信息會(huì)加入硬件映凳、時(shí)間胆筒、機(jī)器當(dāng)期那運(yùn)行信息等。
方法六:
使用expect附帶的mkpasswd生成隨機(jī)數(shù);mkpasswd命令依賴于數(shù)據(jù)包expect,因此必須通過(guò)"yum install expect -y"命令先安裝該數(shù)據(jù)包仆救。示例:
[root@web01 david]# mkpasswd -l 9 -d 2 -c 3 -s 1
1L~1Kusjm
[root@web01 david]# mkpasswd -l 9 -d 2 -c 3 -s 1
2kO1~riRb
[root@web01 david]# mkpasswd -l 9 -d 2 -c 3 -s 1
?ut30SXzg
相關(guān)參數(shù)說(shuō)明如下:
-l # (length of password, default = 9) #指定密碼長(zhǎng)度;
-d # (min # of digits, default = 2) #指定密碼中數(shù)字的數(shù)量;
-c # (min # of lowercase chars, default = 2) #指定密碼中小寫字母的數(shù)量;
-C # (min # of uppercase chars, default = 2) #指定密碼中大寫字母的數(shù)量;
-s # (min # of special chars, default = 1) #指定密碼中特殊字符的數(shù)量;
-p prog (program to set password, default = /bin/passwd) #程序設(shè)置密碼抒和,默認(rèn)是passwd;
上面的隨機(jī)數(shù)長(zhǎng)短不一,可以使用md5sum統(tǒng)一格式:
[root@test ~]# mkpasswd -l 9 -d 2 -c 3 -C 3 -s 1|md5sum|cut -c 2-10
8bbff4c99
[root@test ~]# cat /proc/sys/kernel/random/uuid|md5sum|cut -c 2-10
140edad51
[root@test ~]# head /dev/urandom|cksum|md5sum|cut -c 2-10
6c637bba0
[root@test ~]# date +%s%N|md5sum|cut -c 2-10
9da12f186
[root@test ~]# openssl rand -base64 80|md5sum|cut -c 2-10
d165ada49
[root@test ~]# echo "test$RANDOM"|md5sum|cut -c 2-10
145c845ee