Linux系统产生随机数的六种方式

有时需要给创建的用户设置密码,为了用户的安全,在设置密码时可以使用随机数进行设置,那么Linux产生随机数有下面六种方式:

  • 系统环境变量$RANDOM
  • openssl产生
  • 时间date
  • 系统设备
  • uuid
  • expect

1、系统环境变量$RANDOM

[root@localhost ~]# echo $RANDOM
26663
[root@localhost ~]# echo $RANDOM
5285
[root@localhost ~]# echo $RANDOM
5497
[root@localhost ~]# echo $RANDOM
23465

2、openssl产生

[root@localhost ~]# openssl rand -base64 8
cjc1Z4QvEGs=
[root@localhost ~]# openssl rand -base64 10
jI+ZXxVxYgCRpA==
[root@localhost ~]# openssl rand -base64 6
WGBAdKqM
[root@localhost ~]# openssl rand -base64 1
nA==

3、时间date

[root@localhost ~]# date +%s
1612683160
[root@localhost ~]# date +%s%N
1612683165626189211
[root@localhost ~]# date +%s%N
1612683182106480530

4、系统设备

  /dev/random设备存储的是系统当前运行环境的实时数据,它可以当作系统某时刻的的唯一数据,因此可以通过文件读取的方式来读取里面的数据;/dev/urandom这个设备的数据与/dev/random中的数据是一样的,不过它是非阻塞的,读取数据不会产生阻塞。

[root@localhost ~]# head /dev/urandom|cksum
2679943833 2195
[root@localhost ~]# head /dev/urandom|cksum
2788103193 3732

5、uuid

[root@localhost ~]# cat /proc/sys/kernel/random/uuid 
aebd5cd2-ae61-44d8-8cc8-111ef2113cfd
[root@localhost ~]# cat /proc/sys/kernel/random/uuid 
678ceee0-1411-45bf-ad94-43861db7dd21
[root@localhost ~]# cat /proc/sys/kernel/random/uuid 
56d4b0d2-f51f-4706-a55d-6ffc61d90d6a

6、expect

[root@localhost ~]# yum install -y expect
[root@localhost ~]# mkpasswd -l 8
q2m#WY0j
[root@localhost ~]# mkpasswd -l 10
Tm9]kov2kX
[root@localhost ~]# mkpasswd -l 12
94IhsjmRywq-

上述使用的方法产生的随机数长短不一,使用md5sum命令可以进行统一:

[root@localhost ~]# echo $RANDOM|md5sum
7e4429abc272aa8cd9d35ddef3551bdb  -
[root@localhost ~]# openssl rand -base64 5|md5sum
2e961c32a0f91515bbaf69cf934292ce  -
[root@localhost ~]# date +%s%N|md5sum
097609c9aa34368c8be9e27d1b9ba1ec  -
[root@localhost ~]# head /dev/urandom|cksum|md5sum
85d5170f7b1c2462a6aeb9602854ad03  -
[root@localhost ~]# cat /proc/sys/kernel/random/uuid|md5sum 
bb265e5d301b3e41e2d186146536bef0  -
[root@localhost ~]# mkpasswd -l 8|md5sum
426fa1ef6764ede8bab8557e935ecc59  -
作者:iveBoy
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/shenjianping/p/14385489.html