工作中经常要生成随机密码,参考了一些网上的做法,自己用python写了个小脚本,非常小巧。
#! /usr/bin/env python # -*- coding: utf-8 -*- #@author [email protected] #@version 2012-11-07 import string from os import urandom from random import choice ''' Linux正则命名参考:http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex.php#lang [:alnum:] 代表英文大小写字节及数字,亦即 0-9, A-Z, a-z [:alpha:] 代表任何英文大小写字节,亦即 A-Z, a-z [:blank:] 代表空白键与 [Tab] 按键两者 [:cntrl:] 代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等 [:digit:] 代表数字而已,亦即 0-9 [:graph:] 除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键 [:lower:] 代表小写字节,亦即 a-z [:print:] 代表任何可以被列印出来的字节 [:punct:] 代表标点符号 (punctuation symbol),亦即:" ' ? ! ; : # $... [:upper:] 代表大写字节,亦即 A-Z [:space:] 任何会产生空白的字节,包括空白键, [Tab], CR 等等 [:xdigit:] 代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字节 Python自带常量(本例中改用这个,不用手工定义了) string.digits #十进制数字:0123456789 string.octdigits #八进制数字:01234567 string.hexdigits #十六进制数字:0123456789abcdefABCDEF string.ascii_lowercase #小写字母(ASCII):abcdefghijklmnopqrstuvwxyz string.ascii_uppercase #大写字母(ASCII):ABCDEFGHIJKLMNOPQRSTUVWXYZ string.ascii_letters #字母:(ASCII)abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ string.punctuation #标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 以下的不用,有locale问题 string.lowercase #abcdefghijklmnopqrstuvwxyz string.uppercase #ABCDEFGHIJKLMNOPQRSTUVWXYZ string.letters #ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 以下的不能用 string.whitespace #On most systems this includes the characters space, tab, linefeed, return, formfeed, and vertical tab. string.printable #digits, letters, punctuation, and whitespace ''' #请在此设置您要生成的密码需求 passwd_length = 20 #密码长度 passwd_count = 100 #密码个数 passwd_seed = string.digits + string.ascii_letters + string.punctuation #密码种子 #passwd_seed = string.digits #passwd_seed = string.digits + string.ascii_letters def generate_passwd(): '''Function to generate a password''' passwd = [] while (len(passwd) < passwd_length): passwd.append(choice(passwd_seed)) return ''.join(passwd) def print_string_constants(): '''Test Case''' print string.digits print string.octdigits print string.hexdigits print string.ascii_lowercase print string.ascii_uppercase print string.ascii_letters print string.punctuation print string.lowercase print string.uppercase print string.letters print (string.printable + "ooo") print string.whitespace print '\n\n' if __name__ == '__main__': #print_string_constants() for i in range(0, passwd_count): print generate_passwd() #print "\ndone...python is great!"
rWvR1MsPtso&9}K:.F[m <pgLB~EfD_N1bgkAlr\: *>,S;B5}_,MIlF894\z9 o[lW{gOxF8aE5rR{b=*} kC4VedLzt>HaZ12)_c+k [email protected][EiKh!TnI 0Rcf:#[SQd0G$lHh1HX~ 6VL<Vcu^E?]+5|!VpMRm -MqkDuMFt8Y-FvIl&s<W H)J]@@y%}3]~oOBy#8'D 49=+Ct;GCrpWx%iJ2(h8 f&GU9(;1zrEuvw"y"SK7 {JsiN:5*q<VEp_i>Y(0< oEC<P3&Z3Q=l6]RKivB& W,]p,4rG%#DgYMWN5dMS txw0MLG<.p'!"T+4rK*0 zf3zaaJ4lN8+_Gru9I6{ g)w%B~l3TQqJn:VE)<>c pk^~;bmOP-[1wb%O?~W} Oh_[u6Lb"R2*bD^C|~oo ;b\UDBm/~S|}Z~OwN@QX 79aZ/SGT:QDsRX6h/J?M XvC~KLyUJ"SY6P"$g.j0 dJ,Q(+vaPW":Ny.a*SwG !<;?&Ll[qXdu%`\e$P/0 ~l\ef(~9~1?:KhO_@`H} QR&m!\?g"^0LNoOlTVnm fl3V>}oe-"$Is9[dd#!J *#&4)_UXCz;n-u-X&euB 5A]E&W~{EG_H$xfm,<rc k,@F^eZYgSN/_w(~->K| H1n[gK%9ElbQg!-CsY;l p3mgSw7{Wi+>R`'oc=%\ *o(l2Q,o_15x{x15m6hv "2T[!`@O&s5,2c]$b-Jy RPV$G-Rr^q/Od!5@dWzB 4kiRe5{$'qr78FN8fgsD e;[M'~#7vpS8[7(#_,0G 7:ahGwZ9+'ad(cq|szg/ CaPvnTzt])?SyyqHmI]_ `,)Otgv4<~va-`6fE1[s p,I$3,W}PCrk9sD}[email protected] tEe)2tS(OB6QsE~)eWG7 #VK5#>as+84=sx8:\9%C F0,L2*^W:M}oU")3r*-r 9r.2vnGJ]"\]B=<;DXT7 TuK=Hd-(&fl"pK[]9h4, zLe9SN8>K!>N#VO^A/YJ A}cC_{]ju|PvBmb`A)J" -aL/HQ;Tnnd_&0MRbT[^ *N%)L[qk1Zf.{Ph|H>n. .53z[dDrZcS;i5PFI2SV B!B0z]:`q@OLGy9NDJVg ujpb#$t&K$nLL)}xlz&7 cVJ,V6^>l86W3`9vC2B0 cR7M3373"iB)qG:OW5oa Xcc9goIx;L_gMevUzU&h y!qlkZ>O],+V?vJ*4]\o :4=eXARf~f5qe.]/(Ck1 8z5!migmA#;gi+Rp.0yg ]<*wXqAA`9:iu)1T|b;~ Ln8j5e5s5>LTCeBr(Nu: ;9$.!;x2`.PWkad~Q:Y/ ("C6r5W90=._56N@n)27 Q,&O)miW^5JE)QtmVap* =\%DA`'6IcjtDa#]J;}c t@Kw$.JMK;-O,H'CS?w} "/;J7g/$XRe[]a<DFzG( &##xArJD?TS0AIbBhC5] .7:HKV%j+1H*#Q[86^fx %NsHCQliRDn"JWLOd_9a Yt/r;}NM~qNRwlgre`y& ({Ur@HS<O*0#|Y|UWA[+ .kh?KiQ#7@@q}\1{<nZ> |r6pE>G(gOrmtd!ASCO, 8wgqFm'&XN'A$SjS6jLa M)%#BK8_r%0Wc0\8och4 ?LR/r]OAU-!SLHLyCZC0 TfZ*!O)|{Gn19*&s1JGk 3i7UFCg)$G'4Dl>e5r0| 5?\~{HtP?J-ayla}#-L. "#w#h_rWYtb:L&Qxj~!s '+bSF)9wFf@>or){9{wY ikz?LE[g<i.Dy)`',ce< q;T\[.l}(U!QE(Vq<nMa 1rj8C.^'Gc~lLSQ_Pw%' VfzQB:'i.)x%@!kG`f%- EuaC$ro6mm<(<MUZaoND ehb.p'x&U3U#H3]w`OEx C!Dra6+'6c2,.crs{k#2 f-wclsh_Vako#_x-CC*] 77S8v#GV3c~9j!H2&Or" PWl<uW2/IGw$40Z1IR"x s6{tP"Tde'}h)!|BAlu5 tS%X1l~rC-Zlz!cf#iEM (N;^\\3ZnM:[Ms~Mc>xr 4m8Yv#8{t[=9lRFt,R39 '%T1YG)Ye4W-Dh&-dw:s _JE[x)5rY]-'9-!y^`-E ]{ldr76gE,}()wSb)r*G