Shell 随机生成字符或数字

在编程中通常为了增强安全性,会要求生成一些随机字符串,例如密码。这里简单介绍下6种随机生成方法:

方法1:通过系统环境变量($RANDOM)实现

[root@test01 ~]# echo "TEST$RANDOM"|md5sum|cut -c 1-11
59bfe7c102d
# \$RANDOM 产生0~32767 随机数,再通过 MD5加密 ,之后随机截取部分长度字段,增强复杂性

方法2:通过/dev/urandom配合chksum生成随机数

# /dev/random设备存储着系统当前运行环境的实时数据
[root@test01 ~]# head /dev/urandom|cksum
3747548380 2545
[root@test01 ~]# head /dev/urandom|cksum
2711436708 2739

方法3:通过openssl产生随机数 比较常用 ,通常生成一定长度字符串配合sed 命令过滤出需要的字符

[root@test01 ~]# openssl rand -base64 8
LYZVa7pOHSs=
[root@test01 ~]# openssl rand -base64 8|sed -r "s#[^a-z]##g"
cpjzqw

方法4:通过时间(date)获得随机数,示例代码如下

[root@test01 ~]# date +%s%N
1652370810059577808

方法5:通过UUID生成随机数,UUID码全称是通用唯一识别码(Universally Unique Identifier, UUID)目的是让分布式系统中的所有元素都能有唯一的辨识信息。通常也需要搭配sed或其它命令过滤特殊字符

[root@test01 ~]# cat /proc/sys/kernel/random/uuid
30c4e4e0-8c1a-4743-b518-5dc18f56a752
[root@test01 ~]# cat /proc/sys/kernel/random/uuid|sed -r "s/-//g"
f2d131d87f244808bf7127a3ca22d766

方法6:mkpasswd,通常需要先执行“yum install expect -y”命令安装

[root@test01 ~]# mkpasswd -l 9 -d 2 -c 3 -C 3 -s 1|md5sum|cut -c 2-10
41d8cd98f

以上6种方法是日常获取随机数常用的,一般为了保持相同长度,需要搭配cut 命令进行截取目标长度字符

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容