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

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

[root@kafka60 shell]# date +%s |sha256sum |base64 |head -c  ;echo
YTc4Mjk0Yj

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

 #tr参数
-c或——complerment:取代所有不属于第一字符集的字符;
-d或——delete:删除所有属于第一字符集的字符;
.生成10个小写字母
[root@kafka60 shell]# < /dev/urandom tr -dc a-z|head -c ${:-};echo
iprnfrqlhr
.生成10个大写字母
[root@kafka60 shell]# < /dev/urandom tr -dc A-Z|head -c ${:-};echo
PSKSFZYQPH
.生成10个数字
[root@kafka60 shell]# < /dev/urandom tr -dc -|head -c ${:-};echo .生成10个数字和大写字母的组合字符串
[root@kafka60 shell]# < /dev/urandom tr -dc --A-Z|head -c ${:-};echo
M6HP4LHTNJ
.生成10个随机字符(包含数字,大写字母,小写字母)
[root@kafka60 shell]# < /dev/urandom tr -dc --A-Z-a-z|head -c ${:-};echo
79JUYcjrjx
.生成10个随机字符(包含数字,大写字母,小写字母)
[root@kafka60 shell]# < /dev/urandom tr -dc --A-Z-a-z-|head -c ${:-};echo
JdOi4TMmZD
.生成10个随机字符(包含数字,大写字母,小写字母,特殊字符)
[root@kafka60 shell]# < /dev/urandom tr -dc --A-Z-a-z-/|head -c ${:-};echo
s5-yTgMa8G

3. 使用openssl的随机函数

[root@kafka60 shell]# openssl rand -base64
6kf9CHiiRgiSVQ==
[root@kafka60 shell]# openssl rand -base64 |tr A-Z a-z
1ivhbhsrvjsfsa==
[root@kafka60 shell]# openssl rand -base64 |tr A-Z a-z|cut -c -
hbxd/42tag

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

[root@kafka60 shell]# tr -cd '[:alnum:]' </dev/urandom |fold -w32|head -n1         ##-w32表示生成32个字符的宽度字符
PezxAXSxVNKL3GQcjovgmoiIaDVByxXT
[root@kafka60 shell]# tr -cd '[:alnum:]' </dev/urandom |fold -w10|head -n1
b1r4qLm09S

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

[root@kafka60 shell]# strings /dev/urandom | grep -o '[[:alnum:]]' | head -n  | tr -d '\n'; echo
zFSi9lMfBe6igWotELx0O85sx1hL2ux7

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

[root@kafka60 shell]# </dev/urandom tr -dc _A-Z-a-z--|head -c32;echo
cBdmH-Y7fPzROb4pjCMV7CWK75OHcXgV
[root@kafka60 shell]# </dev/urandom tr -dc a-z--|head -c32;echo
oyglc4qzbd54alegng40k0kvrb8m6q9k
[root@kafka60 shell]# </dev/urandom tr -dc a-z--|head -c10;echo
qzghgesb2w

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

[root@kafka60 shell]# dd if=/dev/urandom bs= count= >/dev/null | base64 -w  | rev | cut -b - | rev
T5cfmBaTX1xcUo+aa4wK+XKF/ydh1VqovEyl8oCxmsw
[root@kafka60 shell]# dd if=/dev/urandom bs= count= >/dev/null | base64 -w | rev | cut -b - | rev
KQqr7OPAoaHsIg=

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

[root@kafka60 shell]# </dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c32; echo
xRzqRTxVwzt2eaa13Ad!Gbt2rsVBAf$r
[root@kafka60 shell]# </dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c10; echo
!t#@C3@QTe

最新文章

  1. angularjs $emit $on $broadcast 父子 兄弟之间传值
  2. ASP.NET 缓存技术分析
  3. cmd复制文件
  4. Java Servlet(八):EL自定义函数
  5. 使用XML文件和Java代码控制UI界面
  6. C#中的Decimal类型
  7. 微信JS-SDK
  8. Java程序员面试宝典——重要习题整理
  9. Oracle中删除重复的经典方案
  10. python学习day3--python基础
  11. 9 个让 JavaScript 调试更简单的 Console 命令
  12. Pie--hdu1969(二分法)
  13. Python 类继承,__bases__, __mro__, super
  14. linux下安装php的oracle拓展
  15. js禁止浏览器后退,防止重复支付
  16. PAT (Advanced Level) 1102. Invert a Binary Tree (25)
  17. Vue 表单验证插件
  18. php implode()函数详解
  19. openstack pike 创建vxlan网络
  20. [Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵

热门文章

  1. MapReduce调度与执行原理系列文章
  2. Struts tags--Data tags
  3. 【转】【MySql】Update批量更新与批量更新多条记录的不同值实现方法
  4. C#NetRemoting双向通信
  5. linux -- Ubuntu 安装搜狗输入法
  6. iOS推送证书从申请到使用
  7. CentOS 6.5在grub界面下更改root密码
  8. Windows下安装Scrapy
  9. C# SerialPortHelper类
  10. ubuntu-14.04.2-desktop-amd64.iso:ubuntu-14.04.2-desktop-amd64:安装Oracle11gR2