Linux 生成随机字符串的方法
随机字符串常用于创建随机账号或密码,Linux 可用以下方法生成随机字符串。
1.生成由大写字母组成的随机字符串:
$ head /dev/urandom | tr -dc A-Z | head -c 20
NRXFYZRTUEDXTVPJAYJW
2.生成由小写字母组成的随机字符串:
$ head /dev/urandom | tr -dc a-z | head -c 20
rizsfwebsmfowsogsqfi
3.生成由纯数字组成的随机字符串:
$ head /dev/urandom | tr -dc 0-9 | head -c 20
06983118429648544871
4.生成由大写字母、小写字母、数字组成的随机字符串:
$ head /dev/urandom | tr -dc A-Za-z0-9 | head -c 30
kFac0BEcbWS9eTZWZwn52ps53kGp6q
5.写成 Shell 脚本:
#!/bin/bash
pass=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 30)
echo $pass
其他方法
通过系统环境变量($RANDOM)
[root@node1 scripts]# echo $RANDOM
4245
[root@node1 scripts]# echo $RANDOM
22740
# RANDOM的随机数范围为0~32767,因此,加密性不是很好,可以通过在输出的随机数后增加加密字符串(就是和密码生成有关的一个字符串)的方式解决,最后再一起执行md5sum操作并截取结果的后n位,这样一来,就无法根据随机数范围0~32767来猜出具体结果了。
[root@node1 scripts]# echo king$RANDOM
king22063
[root@node1 scripts]# echo king$RANDOM|md5sum
3fbe359b707854cabcbc96af50b717e4 -
[root@node1 scripts]# echo king$RANDOM|md5sum|cut -c 8-15
eda56360
通过openssl产生随机数
CodeBlock Loading...
通过时间(date)获得随机数
[root@node1 scripts]# date +%s%N
1602673097974691108
通过/dev/urandom配合chksum生成随机数
CodeBlock Loading...
通过UUID生成随机数
CodeBlock Loading...
使用expect附带的mkpasswd生成随机数
CodeBlock Loading...