目录

Linux 生成随机数

[TOC]

通过 openssl 生成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[root@myhost ~]\# openssl rand -base64 3
xsSp

[root@myhost ~]\# openssl rand -base64 8
8SlHCsBAiYw=

[root@myhost ~]\# openssl rand -base64 10
nUzBw8ngKGGqWw==

`openssl rand -base64 32|tr A-Z a-z|cut -c 1-10`

使用 date 命令生成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[root@myhost ~]\# date +%s
1539071518

[root@myhost ~]\# date +%N
801398716

[root@myhost ~]\# date +%s%N
1539071555311467855

`date +%s |sha256sum |base64 |head -c 10 ;echo`

使用 md5sum 生成随机数

1
date | md5sum

使用 dd 命令生成随机数

1
dd if=/dev/urandom bs=1 count=15|base64 -w 0

通过/dev/random设备产生uuid

1
2
3
4
5
[root@myhost ~]\# cat /proc/sys/kernel/random/uuid
a3dfb0f2-f893-4e57-9d67-184a88d4cb5d

[root@myhost ~]\# cat /proc/sys/kernel/random/uuid |cut -c 1-8
b80c60d8

使用系统环境变量 RANDOM

1
2
3
4
[root@myhost ~]\# echo $RANDOM
14535

##说明:linux系统下的环境变量$RANDOM的取值范围是:0–32767 。
  1. 产生0-25范围内的数,用这个环境变量对26取余即可。
1
2
3
4
5
6
7
[root@myhost ~]\# echo $(($RANDOM%26))
6

[root@myhost ~]\# echo $((RANDOM%26))
11

##说明:第二个表达式RANDOM前面无$符号好像也可以。
  1. 产生6位数的整数,用这个环境变量加上100000即可。
1
2
3
4
5
6
7
[root@myhost ~]\# echo $(($RANDOM+100000))
117482

[root@myhost ~]\# echo $((RANDOM+100000))
126058

##说明:第二个表达式RANDOM前面无$符号好像也可以。
  1. 产生加密的随机数码,将随机数管道给命令md5sum命令即可。
1
2
[root@myhost ~]\# echo $RANDOM |md5sum
6ee8cd13547eb044ad13ba014573af6f  -
  1. 需要固定位数的随机数码,将随机数管道给命令md5sum命令再管道给cut命令即可。
1
2
[root@myhost ~]\# echo $RANDOM |md5sum|cut -c 1-8
de3cfe23

使用第三方工具

  1. expect 非交互式程序控制下用mkpasswd命令:
1
2
3
yum install -y expect

mkpasswd   -l 7		# 生成七位密码包含大小写加特殊字符
  1. 使用pwgen生成随机可读的密码:
1
2
3
4
5
6
7
8
9
yum install pwgen

# 生成长度8,含有数字,含有大小写字母的密码4个,列打印
pwgen -ncC 8 4
# 生成长度8,含有数字,含有小写字母,不包含歧义的密码4个,列打印
pwgen -nABC 8 4

# 生成长度16,含有数字,含有大小写字母,含有特殊字符的密码8个,行打印
pwgen -ncy1 16 8

参数说明:

  • -c or –capitalize密码中至少包含一个大写字母
  • -A or –no-capitalize密码中不包含大写字母
  • -n or –numerals密码中至少包含一个数字
  • -0 or –no-numerals密码中不包含数字
  • -y or –symbols密码中至少包含一个特殊符号
  • -s or –secure生成完全随机密码
  • -B or –ambiguous密码中不包含歧义字符(例如1,l,O,0)
  • -H or –sha1=path/to/file[#seed]使用SHA1 hash给定的文件作为一个随机种子
  • -C在列中打印生成的密码
  • -1不要在列中打印生成的密码,即一行一个密码
  • -v or –no-vowels不要使用任何元音,以避免偶然的脏话
  1. 其他第三方工具:
1
randpw、spw、gpg、xkcdpass

参考链接