使用Python生成随机密码的示例分享
生成随机密码这件事情用python来干确实相当的方便,优美的string方法加上choice简直是绝配
make_password.py
###简单几行代码执行即可生成记不住的字符串### $pythonmake_passwd.py DLrw9EiT Qs4Wm84q RQwl4L2L u9g0LgwW jHPtYdyU ...
$pythonmake_passwd.py DLrw9EiT Qs4Wm84q RQwl4L2L u9g0LgwW jHPtYdyU ...
代码如下——注释比代码长
#!/usr/bin/python #--coding:utf-8--# #------------------------------------------------------------------------------- #Name:make_passwd # #Author:LiuSha # #Created:28/12/2014 #Copyright:(c)WDZJ-SA2014 #------------------------------------------------------------------------------- fromrandomimportchoice importstring defMakepass(length=8,chars=string.letters+string.digits): return''.join([choice(chars)foriinrange(length)]) if__name__=='__main__': foriinrange(10): printMakepass() ##下例基本上就是这个小脚本的所有工作核心了,使用random模块的choice方法取string模块生成的字符串## >>>string.letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >>>string.digits '0123456789' >>>choice(string.digits) '4' >>>choice(string.letters) 'T' ##有关生成器可参考:http://www.ipython.me/python/python-generator.html## #!/usr/bin/python #--coding:utf-8--# #------------------------------------------------------------------------------- #Name:make_passwd # #Author:LiuSha # #Created:28/12/2014 #Copyright:(c)WDZJ-SA2014 #------------------------------------------------------------------------------- fromrandomimportchoice importstring defMakepass(length=8,chars=string.letters+string.digits): return''.join([choice(chars)foriinrange(length)]) if__name__=='__main__': foriinrange(10): printMakepass() ##下例基本上就是这个小脚本的所有工作核心了,使用random模块的choice方法取string模块生成的字符串## >>>string.letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' >>>string.digits '0123456789' >>>choice(string.digits) '4' >>>choice(string.letters) 'T' ##有关生成器可参考:http://www.ipython.me/python/python-generator.html##
生成一些人似乎能好记一些的密码(Qs4Wm84q这种密码似乎除了复制粘贴没有别的选择,话说前年我使用shell生成的类似的密码给ldap做默认密码,我当时公司就真有员工把这样的密码背下来了,现在想想真心是厉害~~~)。
##这样看起来是比上面的好记一点了吧,但需要提供一个字典文件## $pythonmake_dictpass.py181 ipythosd $pythonmake_dictpass.py nahontchen chenyibfeo ipythoniue coreostche ... $pythonmake_dictpass.py181 ipythosd $pythonmake_dictpass.py nahontchen chenyibfeo ipythoniue coreostche ...
代码如下
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
#Name:make_dictpass
#
#Author:LiuSha
#
#Created:28/12/2014
#Copyright:(c)WDZJ-SA2014
#-------------------------------------------------------------------------------
importrandom
importstring
classpasswd():
data=open('./word.txt').read().lower()
defrenew(self,n,maxmem=3):
self.chars=[]
foriinrange(n):
randspot=random.randrange(len(self.data))
self.data=self.data[randspot:]+self.data[:randspot]
where=-1
locate=''.join(self.chars[-maxmem:])
whilewhere<0andlocate:where=self.data.find(locate)locate=locate[1:]c=self.data[where+len(locate)+1]ifnotc.islower():c=random.choice(string.lowercase)self.chars.append(c)def__str__(self):return''.join(self.chars)if__name__=='__main__':importsys##如果带参数的话可以定义生成密码的次数,长度,追溯记录##iflen(sys.argv)>1:
dopass=int(sys.argv[1])
else:
dopass=8
iflen(sys.argv)>2:
length=int(sys.argv[2])
else:
length=10
iflen(sys.argv)>3:
memory=int(sys.argv[3])
else:
memory=3
onepass=passwd()
foriinrange(dopass):
onepass.renew(length,memory)
printonepass
##字典文件(可以是各种单词的组合)## $catword.txt chenyi itchenyi python ipython coreos coreos.me ipython.me
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
#Name:make_dictpass
#
#Author:LiuSha
#
#Created:28/12/2014
#Copyright:(c)WDZJ-SA2014
#-------------------------------------------------------------------------------
importrandom
importstring
classpasswd():
data=open('./word.txt').read().lower()
defrenew(self,n,maxmem=3):
self.chars=[]
foriinrange(n):
randspot=random.randrange(len(self.data))
self.data=self.data[randspot:]+self.data[:randspot]
where=-1
locate=''.join(self.chars[-maxmem:])
whilewhere<0andlocate:where=self.data.find(locate)locate=locate[1:]c=self.data[where+len(locate)+1]ifnotc.islower():c=random.choice(string.lowercase)self.chars.append(c)def__str__(self):return''.join(self.chars)if__name__=='__main__':importsys##如果带参数的话可以定义生成密码的次数,长度,追溯记录##iflen(sys.argv)>1:
dopass=int(sys.argv[1])
else:
dopass=8
iflen(sys.argv)>2:
length=int(sys.argv[2])
else:
length=10
iflen(sys.argv)>3:
memory=int(sys.argv[3])
else:
memory=3
onepass=passwd()
foriinrange(dopass):
onepass.renew(length,memory)
printonepass
##字典文件(可以是各种单词的组合)## $catword.txt chenyi itchenyi python ipython coreos coreos.me ipython.me