1. $RANDOM
shell中有一个变量$RANDOM 能够生成随机的数字,范围是0~32767[2^15],大概率基本上是4~5位数字。
取0~99之间的数:echo "$((${RANDOM}%100))"
2. /dev/urandom
/dev/random存储系统当前运行的环境的实时数据,可以看作系统某时候的唯一值数据,提供优质随机数。一般使用不推荐
/dev/urandom是非阻塞的随机字符产生器,读取时不会产生阻塞,速度更快、安全性较差的随机数发生器。推荐
因为/dev/urandom生成有许多乱码,因此需要得到你想要的字符串必须加以处理再输出。比如你希望只输出字母和数字组合的随机字符串:
cat /dev/urandom|head -n10|tr -dc 'a-zA-Z0-9' tr -dc 表示指定输出哪些字符
生成四位随机验证码[各种登录验证广泛使用]:
head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 4
head /dev/urandom | tr -dc 'a-zA-Z0-9' | cut -c1-4
tr -dc 'a-zA-Z0-9'命令可以指定输出哪些字符种类
head /dev/urandom | md5sum | cut -c1-4 # 经过md5sum算法之后只有小写字母和数字两种字符
PS: 这里补充一下取几位字符的方法。head -c 4/tail -c 4/cut -c1-4,其中head和tail中的-c参数指的是字节数,而cut 里的-c才是指的字符数。如果都是ASCII码,一个字符就是一个字节,但是如果有非ASCII字符那就不相等了。
3. uuid
UUID码全称是通用唯一识别码 (Universally Unique Identifier, UUID),UUID格式是:包含32个16进制数字,以“-”连接号分为五段,形式为8-4-4-4-12的32个字符。linux的uuid码也是有内核提供的,在/proc/sys/kernel/random/uuid这个文件内。cat/proc/sys/kernel/random/uuid每次获取到的数据都会不同
也可以使用uuidgen工具
uuidgen | md5sum | cut -c 1-4 #输出小写字母和数字的组合
uuidgen | cksum | cut -c 1-4 #cksum表示只生成数字
就介绍这几种方法,记住一两种就可以了。记住下面两条就行
head /dev/urandom | tr -dc 'a-zA-Z0-9' | cut -c1-4
cksum表示只取整数
阅读(1338) | 评论(0) | 转发(0) |