linux系统产生随机数的6种方法

案例:生成10个随机的小写字母

cat /dev/urandom | tr -dc 'a-z' | fold -w 10 | head -n 1
xvsymzhzze

mkpasswd -l 50 | tr -dc 'a-z'|cut -c1-10
xkzaurucjr

tr -dc a-z < /dev/urandom |head -c 10
ttflagximb

第一种:echo $RANDOM

[root@www ~]# echo $RANDOM

31018

[root@www ~]# echo $RANDOM|md5sum
095a90342d5732638622913398ff840e -

第二种:

[root@www ~]# echo $(date +%N%t)
833203837

[root@www ~]# echo $(date +%N%t)|md5sum
02fc6e5ddd46b1948cad4984263fdc3e -

[root@www ~]# echo $RANDOM|md5sum|cut -c 1-8
7aaa0628

结合:

[root@www ~]# echo “$RANDOM $(date +%U%t)“|md5sum|cut -c 1-8
b2cfa41c

第三种:

[root@www ~]# openssl rand -base64 8
YZIWjLzDKPk=
[root@www ~]# openssl rand -base64 8|md5sum
3d1b11d0697f85b2b09b35a29fc9f5db -

第四种:

[root@www ~]# head /dev/urandom|cksum
2756567291 2491

head /dev/urandom|cksum|md5sum
092aec7e0e17f4777de45bdd1a555614 -

第五种:

[root@www ~]# cat /proc/sys/kernel/random/uuid 
5cbb5d8f-39b5-48fa-94b9-54f77e0b87d7

cat /proc/sys/kernel/random/uuid|md5sum
26197fc87b660c7db261d746c22def6c -

第六种:

[root@www ~]# mkpasswd 
65jrZM|er

[root@www ~]# mkpasswd|md5sum
bcdfd40390bb59294f59bc8ea4323586 -

检测是否唯一的方法

[root@www ~]# echo $RANDOM|md5sum|cut -c 1-9|sort|uniq -c|sort -nk1
1 f289c94c5

前边为1证明他是唯一的

[root@www ~]# for i in $(seq 20);do echo $RANDOM|md5sum|cut -c 1-9|sort|uniq -c|sort -nk1;done
1 47640a2cb
1 ff40af0fc
1 1d4f13e71
1 a35a306e0
1 75b0789f7
1 94a6d7adb
1 16d524d76
1 e4519e551
1 4fd3ee17b
1 f1c7210f7
1 1e8d495e9
1 1ad6a9ab3
1 796ab76be
1 2bb0d539e
1 ddd22c3c0
1 9e12e9804
1 28d4ea8a3
1 0e9e69bd9
1 500139765
1 0298a354a

你可能感兴趣的:(经验分享)