分享Linux 系统生成随机密码的10种方法

通常情况下大家生成密码都好困惑,一来复杂程度不够会不安全,复杂程度够了又不能手动随便敲击键盘打出一同字符(但通常情况下这些字符是有规律的),使用1password 或者 keepass 这种软件生成也可以,不过貌似1password 要收费,既然这样我们就玩一下好玩的用 linux 来生成随机密码玩玩吧;

Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它。例如,你可以通过数十种方法来生成随机密码。本文将介绍生成随机密码的十种方法。

1. 使用SHA算法来加密日期,并输出结果的前32个字符:

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

生成结果如下:

ZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4

2. 使用内嵌的/dev/urandom,并过滤掉那些日常不怎么使用的字符。这里也只输出结果的前32个字符:

< /dev/urandom tr -dc _A-Z-a-z-0-9 |head -c${1:-32};echo

生成结果如下:

pDj0Xwz7exD_Qb5B27BwWsM1hrF3a7cJ

3. 使用openssl的随机函数

openssl rand -base64 32

生成结果如下:

rYJWqJlTLAYeX3j7nCbir20h1k/0CnqLNEuNyTScfKo=

4. 这种方法类似于之前的urandom,但它是反向工作的

tr -cd '[:alnum:]' < /dev/urandom | fold -w32 | head -n1;echo

生成结果如下:

tpgudzF7sqtU4yyW2LVhmUQOZIQi87

5. 使用string命令,它从一个文件中输出可打印的字符串

strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 32 | tr -d '\n'; echo

生成结果如下:

W4v1iQtkmQ8sIDd9jxDQNpg8HPMOZ8

6. 这是使用urandom的一个更简单的版本

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32;echo

生成结果如下:

rMDlGSPN_bm-IZVFWz9BEi0rF-jIy6gs

7. 使用非常有用的dd命令

dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev

生成结果如下:

9+0RUd4U3HmSdMlgD7j0sf/r09MZFDVBS28W+pO2WcA

8. 你甚至可以生成一个只用左手便可以输入的密码

</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c32; echo

生成结果如下:

VTG3#TR4sAgXg3Z%##WZG4ZQ@GZ$wdqF

9. 如果每次都使用上述某种方法,那更好的办法是将它保存为函数。如果这样做了,那么在首次运行命令之后,你便可以在任何时间只使用randpw就可以生成随机密码。或许你可以把它保存到你的~/.bashrc文件里面

randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}

生成结果如下:

vgBX8cNo950RiykZRpPYa4BvbAvZbY_x

10. 最后这种生成随机密码的方法是最简单的。它同样也可以在安装了Cygwin的Windows下面运行。在Mac OS X下也可以运行。我敢肯定会有人抱怨这种方法生成的密码没有其它方法来的随机。但实际上如果你使用它生成的全部字符串作为密码,那这个密码就足够随机了

date | md5sum

生成结果如下:

e0d057b46a9a78346cbd94b25e574e79 -
date | base64

生成结果如下:

MjAxNOW5tCAwN+aciCAzMeaXpSDmmJ/mnJ/lm5sgMTc6MDA6MzYgQ1NUCg==
ifconfig | md5sum

生成结果如下:

7c4243742aa515d45c12deca31428a95 -

甚至你想生成一个核弹发射密码都可以,下面是一个生成长密码的例子;

ifconfig | base64

生成结果如下:

ZW0xICAgICAgIExpbmsgZW5jYXA6RXRoZXJuZXQgIEhXYWRkciA3ODoyQjpDQjoyQjpCMDo5NCAg
CiAgICAgICAgICBpbmV0IGFkZHI6MTkyLjE2OC4zLjUgIEJjYXN0OjE5Mi4xNjguMy4yNTUgIE1h
c2s6MjU1LjI1NS4yNTUuMAogICAgICAgICAgaW5ldDYgYWRkcjogZmU4MDo6N2EyYjpjYmZmOmZl
MmI6YjA5NC82NCBTY29wZTpMaW5rCiAgICAgICAgICBVUCBCUk9BRENBU1QgUlVOTklORyBNVUxU
SUNBU1QgIE1UVToxNTAwICBNZXRyaWM6MQogICAgICAgICAgUlggcGFja2V0czoyMDY3NTY0IGVy
cm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczowIGZyYW1lOjAKICAgICAgICAgIFRYIHBhY2tldHM6
ODg2NDUgZXJyb3JzOjAgZHJvcHBlZDowIG92ZXJydW5zOjAgY2FycmllcjowCiAgICAgICAgICBj
b2xsaXNpb25zOjAgdHhxdWV1ZWxlbjoxMDAwIAogICAgICAgICAgUlggYnl0ZXM6MjAzNDkzNTEx
ICgxOTQuMCBNaUIpICBUWCBieXRlczozMjUyNzUxNiAoMzEuMCBNaUIpCgpsbyAgICAgICAgTGlu
ayBlbmNhcDpMb2NhbCBMb29wYmFjayAgCiAgICAgICAgICBpbmV0IGFkZHI6MTI3LjAuMC4xICBN
YXNrOjI1NS4wLjAuMAogICAgICAgICAgaW5ldDYgYWRkcjogOjoxLzEyOCBTY29wZTpIb3N0CiAg
ICAgICAgICBVUCBMT09QQkFDSyBSVU5OSU5HICBNVFU6MTY0MzYgIE1ldHJpYzoxCiAgICAgICAg
ICBSWCBwYWNrZXRzOjU2OTkzMSBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1bnM6MCBmcmFtZTow
CiAgICAgICAgICBUWCBwYWNrZXRzOjU2OTkzMSBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1bnM6
MCBjYXJyaWVyOjAKICAgICAgICAgIGNvbGxpc2lvbnM6MCB0eHF1ZXVlbGVuOjAgCiAgICAgICAg
ICBSWCBieXRlczozMzEzMDcxOSAoMzEuNSBNaUIpICBUWCBieXRlczozMzEzMDcxOSAoMzEuNSBN
aUIpCgo=

以上是我们小编给大家分享Linux 系统生成随机密码的10种方法,希望大家喜欢。

(0)

相关推荐

  • linux 随机密码生成工具mkpasswd详解及实例

    linux 随机密码生成工具mkpasswd详解及实例 mkpasswd命令生成随机复杂密码,前提安装expect,然后执行mkpasswd命令即可生成随机的密码. 一.基本的命令安装 安装expect: -l # (密码的长度定义, 默认是 9) -d # (数字个数, 默认是 2) -c # (小写字符, 默认是 3) -C # (大写字符, 默认是 2) -s # (特殊字符, 默认是 1) -v (详细...) -p prog (程序设置密码, 默认是 passwd) 详细参数,用如下命

  • 详解Linux下随机生成密码的命令总结

    有时候经常为如何设置一个安全.符合密码复杂度的密码而绞尽脑汁,说实话,这实在是一个体力活而且浪费时间,更重要的是设置密码的时候经常纠结.终于有一天实在忍不住了,于是学习.整理了一下如何使用Linux下命令来随机生成安全.符合密码复杂度的命令. 俗话说"工欲善其事必先利其器".如果能用挖土机的,你为什么要用锄头? 最近一直在反思自己:习惯性用原始.老旧的方式解决问题.而不擅长利用一些工具快捷.方便的解决问题.  1:mkpaswd命令  mkpasswd 是Linux自带的一个密码生成工

  • 分享Linux 系统生成随机密码的10种方法

    通常情况下大家生成密码都好困惑,一来复杂程度不够会不安全,复杂程度够了又不能手动随便敲击键盘打出一同字符(但通常情况下这些字符是有规律的),使用1password 或者 keepass 这种软件生成也可以,不过貌似1password 要收费,既然这样我们就玩一下好玩的用 linux 来生成随机密码玩玩吧; Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它.例如,你可以通过数十种方法来生成随机密码.本文将介绍生成随机密码的十种方法. 1. 使用SHA算法来加密日期,

  • Linux删除目录下的文件的10种方法小结

    看到了一遍文章,便突发奇想的想起Linux中删除目录下的所有文件的方法:整理了几个,如有不足,还望读者不吝赐教! 删除当前目录下的文件 1.rm -f * #最经典的方法,删除当前目录下的所有类型的文件 2.find . -type f -delete或find . -type f -exec rm -f {} \; #用find命令查找普通文件并删除or用find命令的处理动作将其删除 3.find . -type f | xargs rm -f #用于参数列表过长;要删除的文件太多 4.rm

  • Linux文件清空的五种方法总结分享

    本文主要介绍的是Linux文件清空的五种方法,下面话不多说,来看看详细的介绍吧. 1.使用重定向的方法 [root@centos7 ~]# du -h test.txt 4.0K test.txt [root@centos7 ~]# > test.txt [root@centos7 ~]# du -h test.txt 0 test.txt 2.使用true命令重定向清空文件 [root@centos7 ~]# du -h test.txt 4.0K test.txt [root@centos7

  • 详解linux安装软件的几种方法

    一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd soft.version.rpm所在的目录: 4.输入rpm -ivh soft.version.rpm 详细介绍: 1. 安装: 我只需简单的一句话,就可以说完.执行: rpm –ivh rpm的软件包名 更高级的,请见下表: rpm参数 参数说明 -i 安装软件 -t 测试安装,不是真的安装 -p 显示安装进度 -f 忽略任何错误

  • linux下数据压缩的几种方法与查看方式(示例代码)

    1,tar命令 使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进行压缩了,tar命令本身不进行数据压缩,但可以在打包或解包的同时调用其它的压缩程序,比如调用gzip.bzip2 选项: -c 创建.tar格式包文件      -x 解开.tar格式包文件      -v显示详细信息      -f 使用归档文件      -p 保留原始文件权限      -C 解压到目标文件夹      -z 调用gzip进行压缩或解

  • LINUX查看进程的4种方法(小结)

    进程是在 CPU 及内存中运行的程序代码,而每个进程可以创建一个或多个进程(父子进程). **查看进程方法:** 第一种: ps aux ps命令用于报告当前系统的进程状态.可以搭配kill指令随时中断.删除不必要的程序.ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵死.哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的. a:显示当前终端下的所有进程信息,包括其他用户的进程. u:使用以用户为主

  • JavaScript中交换值的10种方法总结

    前言 在开发过程中又是我们需要对值进行交换.一般我们都在用一种简单的解决方案:"临时变量".不过还有更好的办法,而且不只有一个,有很多.有时我们在网上搜寻解决方案,找到后复制粘贴,但是从没想过这小段代码是怎样工作的.现在我们该学习一下应该怎样轻松高效地交换值了. 1 使用临时变量 先是最简单的一种. function swapWithTemp(num1,num2){ console.log(num1,num2) var temp = num1; num1 = num2; num2 =

  • 分享JavaScript 类型判断的几种方法

    目录 一.JavaScript 基本类型 1.原始数据类型 2.引用数据类型 3.两种数据类型的存储方式 二.Javascript 数据类型判断的几种方法 1.typeof 2.instanceof 3.构造函数(constructor) 4.Object.prototype.toString.call() 三.写在最后 一.JavaScript 基本类型 首先介绍一下JavaScript中的八大基本类型 1.原始数据类型 除对象类型(object)以外的其它任何类型定义的不可变的值(值本身无法

  • GoLang读取文件的10种方法实例

    目录 一. 整个文件读入内存 1.直接指定文化名读取 1.1使用os.ReadFile函数读取文件 2.先创建句柄再读取 2.1使用os.OpenFile函数只读形式获取句柄 2.2代码讲解 二.每次只读取一行 1.使用bufio.Reader结构体的ReadBytes方法读取字节数 2.使用bufio.Reader结构体的ReadString方法读取字符串 3.代码讲解 3.1bufio.Reader结构体 三.每次只读取固定字节数 1.使用os库 2.使用 syscall库 总结 一. 整个

  • C#打印PDF文档的10种方法(小结)

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些归纳总结,这里归纳了10种打印需求及方法.如下: 使用默认打印机打印PDF文档 使用虚拟打印机(Microsoft XPS Document Writer)打印PDF文档 指定打印机及PDF文档打印页码范围 静默打印PDF文档 双面打印PDF文档 黑白打印PDF文档 打印PDF文档时选择不同的出纸盒

随机推荐