linux产生随机数的方法

1.通过系统环境变量($RANDOM)实现

#RANDOM的随机数的范围为:0~32767,加密性不是很好,可以通过在输出的随机数后增加加密字符串的方式来解决,最后在一起执行md5操作并截取最后的n位,这样一来,就无法通过范围来猜测出具体的结果。

2.通过openssl产生随机数

令数字和大小写相结合,并带上特殊的字符,可以达到很长的位数,这样的随机数就很安全

[chengmo@centos5  shell]$ echo $RANDOM
10918
[chengmo@centos5  shell]$ echo $RANDOM
10001
 

#连续2次访问,结果不一样,这个数据是一个小于或等于5位的整数

3.通过时间(date)获得随机数

通过时间获得随机数(date)

date +%s%N #生成19位数字,1287764807051101270

date +%s%N | cut -c6-13 #取八位数字,21793709

date +%s%N | md5sum | head -c 8 #八位字母和数字的组合,87022fda

[root@centos5  shell]$ date +%s
1287764773
#获得时间戳,当前到:1970-01-01 00:00:00 相隔的秒数
#如果用它做随机数,相同一秒的数据是一样的。在做循环处理,多线程里面基本不能满足要求了。
 
[root@centos5  shell]$ date +%N
738710457
#获得当前时间的纳秒数据,精确到亿分之一秒。
#这个相当精确了,就算在多cpu,大量循环里面,同一秒里面,也很难出现相同结果,不过不同时间里面还会有大量重复碰撞
 
[root@centos5  shell]$ date +%s%N
1287764807051101270
#这个可以说比较完美了,加入了时间戳,又加上了纳秒
发布了111 篇原创文章 · 获赞 0 · 访问量 2537

猜你喜欢

转载自blog.csdn.net/qq_42024433/article/details/104441194