linux shell随机数原理分析

发布时间:2020-04-25编辑:脚本学堂
linux下shell生成随机数的原理分析,shell随机数生成思路,可以使用时间生成随机数,系统shell内部变量$random生成随机数,本文探讨了几种实现方法的思路与异同。

linux shell生成随机数原理分析

1、使用时间命令date生成随机数
利用data命令生成输出unixtimestamp(%s)和当前时间的纳秒数据(%n,精确到亿分之一秒。)

前者保证在不同秒数之内输出不重复,后者保证在同一秒内数字不重复,两者组合:
 

date +%s%n
 

此方法不依赖系统,只要时间不停止,会一直得到不重复的为随机数。

2、系统shell内部变量 $random
依赖shell

3、通过linux的随机设备获取,然后算校验和
 

head -10 /dev/urandom | cksum

注意:千万不要使用cat去获取,获取1行和10行没有太大的区别。可以使用head或tail命令

4、通过linux的内核的uuid获取
uuid的计算信息会加入硬件,时间,机器当前运行信息等,可以保证生成的都是全球唯一的随机密码:
 

cat /proc/sys/kernel/random/uuid

然后,在算校验和转换为数字即可,但是依赖linux内核。