先介绍最简单的方法,Linux自带的
$ strings /dev/urandom |tr -dc A-Za-z0-9 | head -c 20; echo whucNWhr35W6ZP0MxrLQ
$ head -c 12 /dev/random | base64 | tr -d '\n=' Z9Xx4neDb+P3jHkD
-c 参数调整密码长度
pwgen
项目地址:https://sourceforge.net/projects/pwgen/
安装
$ sudo apt-get install pwgen -y
使用
$ pwgen --help
Usage: pwgen [ OPTIONS ] [ pw_length ] [ num_pw ]
使用案例:
$ pwgen -ysBv 15 Xb7:b[Lthw-zmVx k%vrdn]R>T4#+PW <%!4~\t}.MH!9&+ f?9|/MN3CJc_'[{ 4,rVVq?$gK@s@*_ 4"'_RsN4c;W_"k= $>MX,|T9TVWt'_s PW?;MHN+tzF7>g[ mb3+`tnx*/KrWPN zpqK$>)_-?CVk4` N`4NH;f3q*'r+xz s|:~,>L'NP7m-jX FF'3'jTp9/R\!H\ Ht<(b^X<93*^q/+ |!^c]P+mgN$4C=s `^"HK3sm$F>;whb _XwWcFpW)4!xxpn 9#3V\kCVXW&]*7P ;Lvc\?L#mpM9xdL 3@hN\m/@*`zW%Tf Cmr+&'wH4#tr9,> @p.N)KCtT=@9{mX `Ph[#Jx|X:.3*#V F@/,tF':n7T_JsL /:r7Rr]*z#^@n.( sJzppz%<-7C-C;T &c]3`Vd_7\$g#:x xLKF};M4#%v-7Rg +*/[wpp]{nF9bVF @r9(~w"[WzfCTt) WfpvV9g~&gm$`h~ >!#qsfF3zN;+.>" j3M{`H$zft<~Nwg 7RbL?zPwJ$Mbd>} \F9`*ksWp77Cx#= K[cPz3FnzgK}fv: ^f7M"|z>][Hp$=( hV}>V7.$tJpV{r` qdN9$c%Nd'KR'jp {T3&7%]{*T43rN4 /*~L%W^L(q)N;t9 vTWJ&r4*)N9wnXr jn4R[V^~CT)V;/= HH',4"xVTjf@H>! :zcs\H=@x\7(ghd -4>h;+WWh@H$9]~ M/mFg';P7)dJ-|? '@VC4H*q|j&"@J7 T#}X:[j.L<3]Nr+ ?hF>)PLLN}r`T3K bqP4%R;?g)*L]Xk 3+)j--]Hv^[r?bw f.4kNRHh"t*)F^h tV}#4w@~dh$9tFb nbP3W~k#KfW3'|= HCd@-$/p"sh4W-_ V{9t"q-F4z9|L4T +[P\Ls9hL>*)gC4 w:bz7#g[,W&`?W= <C;7(gPV@<[_[\/ ^z?9b=bMh}+t%Xk hLr_K&d*c,g_4dL ^\^_#PJf4#w~CNk c*<dgr9_c"wNWgd 9MjkNq`[!k_|9(@ {[7&"&^4.^]sK"} w9>3\bX&(Wb"v\# b3%WK!=7bk]mtX~ z{'<c9.r@^fT'XV (}=p4R4dCNV|b<7 [$wt_)%9z!w.C+L Jq-tF?sj4WkH!x\ Kx34F_PHFr!~Frx ;(H3x73MhM3@gq~ @pwF9LK<|<nx=[z (_[9cFTsX_MC&T> -{|_99pNmsq&CJ^ 9WbhPwt;+{"^`@\ n4h[x_F`g}Pt4{R p!m7d/dk4>J@Ljj 9_/CdwTX}$!vN_h :J(d7_-)N["&j*w (=V#_<\p9JCw-~, >|_/k.7hdL\{`): .>3\fK_h>Ws4_@% @9?XLVCg7~fF,fF 7"~+Wd!b4!hdx\9 4*m>*7FXd#P+<<p xt~:jm?$NHd[(9: LfvK">9M+"/;L9` rXJW+Xqp4^)n<JL <Vr9\n$P;hKhj`m /7&J&H\x&m}z[H/ +&h<?P%c!|]@3b| -zF9?<N;nt[J*`K {7JzT/*sN$vHgMh ,R7XN,Ws'#+&>*F )-WqdJ3"^s*JsC% '!9<]-d~_!Rw#[( 9)9dPJ%9Fk>L/n'
$ pwgen -ysBv 12 -1 j:3fcNW*<^Ft
$ pwgen -ysBv 6 -1 | fold -w1 |shuf|tr -d '\n' q3?bH;
解释:
fold -w1 将字符串拆分,一行一个字符
shuf 打乱字符串
tr -d '\n' 将一个个字符拼起来,用 tr '\n' '\0' 也行
xkcdpass 一个用Python编写的密码生成器
可以从这里下载: https://pypi.python.org/pypi/xkcdpass/
安装
$ sudo apt-get install xkcdpass -y
使用
$ xkcdpass --help usage: xkcdpass [-h] [-w WORDFILE] [--min MIN_LENGTH] [--max MAX_LENGTH] [-n NUM_WORDS] [-i] [-v VALID_CHARS] [-V] [-a ACROSTIC] [-c COUNT] [-d DELIM] [--allow-weak-rng]
使用案例:
先简单运行下xkcdpass
$ xkcdpass
coastal palpable spiny delicacy removal mobster
将会随机给出你几个像上面这样的字典单词
$ xkcdpass -c 6 saffron sixth duller bargraph unpinned gaffe dangle hurling croon elevation untitled justly muster pastrami unruffled armful purging stack exceeding january outline preorder petticoat stubborn elective doorman giddily clapping valium handled moonstone direction spoiling debit antiviral yodel
会生成6行随机字典单词
你可以用这些单词作为其他命令,比如 md5sum 的输入,来获取随机密码(就像下面这样)。
$ xkcdpass | md5sum
e0c54cdbbd25ad71664b38e8b391f219 -
默认情况下,xkcdpass使用的是EFF的“Long”字典表,但是你也可以使用自己的字典表。(自己生成字典表可以参考crunch--字典生成工具)
$ xkcdpass -w wordlist1.txt -w wordlist2.txt
两者结合脚本使用
将 pwgen 和 xkcdpass 结合起来用,生成 12 位密码的脚本
#!/bin/bash p1=`xkcdpass | md5sum` p2=`pwgen -ysBv 6 -1 | fold -w1 |shuf|tr -d '\n'` p3=`echo ${p1:0:6}${p2} | fold -w1 |shuf|tr -d '\n'` echo ${p3}