生成随机密码这件事情用python来干确实相当的方便,优美的string方法加上choice简直是绝配
make_password.py
1
2
3
4
5
6
7
8
9
|
###简单几行代码执行即可生成记不住的字符串###
$ python make_passwd.py
DLrw9EiT
Qs4Wm84q
RQwl4L2L
u9g0LgwW
jHPtYdyU
...
|
1
2
3
4
5
6
7
|
$ python make_passwd.py
DLrw9EiT
Qs4Wm84q
RQwl4L2L
u9g0LgwW
jHPtYdyU
...
|
代码如下——注释比代码长
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
# Name: make_passwd
#
# Author: LiuSha
#
# Created: 28/12/2014
# Copyright: (c) WDZJ-SA 2014
#-------------------------------------------------------------------------------
from random import choice
import string
def Makepass(length = 8 , chars = string.letters + string.digits):
return ''.join([choice(chars) for i in range (length)])
if __name__ = = '__main__' :
for i in range ( 10 ):
print Makepass()
##下例基本上就是这个小脚本的所有工作核心了,使用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-SA 2014
#-------------------------------------------------------------------------------
from random import choice
import string
def Makepass(length = 8 , chars = string.letters + string.digits):
return ''.join([choice(chars) for i in range (length)])
if __name__ = = '__main__' :
for i in range ( 10 ):
print Makepass()
##下例基本上就是这个小脚本的所有工作核心了,使用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做默认密码,我当时公司就真有员工把这样的密码背下来了,现在想想真心是厉害~~~)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
##这样看起来是比上面的好记一点了吧,但需要提供一个字典文件##
$ python make_dictpass.py 1 8 1
ipythosd
$ python make_dictpass.py
nahontchen
chenyibfeo
ipythoniue
coreostche
...
$ python make_dictpass.py 1 8 1
ipythosd
$ python make_dictpass.py
nahontchen
chenyibfeo
ipythoniue
coreostche
...
|
代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
# Name: make_dictpass
#
# Author: LiuSha
#
# Created: 28/12/2014
# Copyright: (c) WDZJ-SA 2014
#-------------------------------------------------------------------------------
import random
import string
class passwd():
data = open ( './word.txt' ).read().lower()
def renew( self , n, maxmem = 3 ):
self .chars = []
for i in range (n):
randspot = random.randrange( len ( self .data))
self .data = self .data[randspot:] + self .data[:randspot]
where = - 1
locate = ''.join( self .chars[ - maxmem:])
while where < 0 and locate: where = self .data.find(locate) locate = locate[ 1 :] c = self .data[where + len (locate) + 1 ] if not c.islower(): c = random.choice(string.lowercase) self .chars.append(c) def __str__( self ): return ' '.join(self.chars) if __name__ == ' __main__': import sys ##如果带参数的话可以定义生成密码的次数,长度,追溯记录## if len(sys.argv) > 1:
dopass = int (sys.argv[ 1 ])
else :
dopass = 8
if len (sys.argv) > 2 :
length = int (sys.argv[ 2 ])
else :
length = 10
if len (sys.argv) > 3 :
memory = int (sys.argv[ 3 ])
else :
memory = 3
onepass = passwd()
for i in range (dopass):
onepass.renew(length,memory)
print onepass
|
1
2
3
4
5
6
7
8
9
|
##字典文件(可以是各种单词的组合)##
$ cat word.txt
chenyi
itchenyi
python
ipython
coreos
coreos.me
ipython.me
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#!/usr/bin/python
#--coding:utf-8--#
#-------------------------------------------------------------------------------
# Name: make_dictpass
#
# Author: LiuSha
#
# Created: 28/12/2014
# Copyright: (c) WDZJ-SA 2014
#-------------------------------------------------------------------------------
import random
import string
class passwd():
data = open ( './word.txt' ).read().lower()
def renew( self , n, maxmem = 3 ):
self .chars = []
for i in range (n):
randspot = random.randrange( len ( self .data))
self .data = self .data[randspot:] + self .data[:randspot]
where = - 1
locate = ''.join( self .chars[ - maxmem:])
while where < 0 and locate: where = self .data.find(locate) locate = locate[ 1 :] c = self .data[where + len (locate) + 1 ] if not c.islower(): c = random.choice(string.lowercase) self .chars.append(c) def __str__( self ): return ' '.join(self.chars) if __name__ == ' __main__': import sys ##如果带参数的话可以定义生成密码的次数,长度,追溯记录## if len(sys.argv) > 1:
dopass = int (sys.argv[ 1 ])
else :
dopass = 8
if len (sys.argv) > 2 :
length = int (sys.argv[ 2 ])
else :
length = 10
if len (sys.argv) > 3 :
memory = int (sys.argv[ 3 ])
else :
memory = 3
onepass = passwd()
for i in range (dopass):
onepass.renew(length,memory)
print onepass
|
1
2
3
4
5
6
7
8
9
|
##字典文件(可以是各种单词的组合)##
$ cat word.txt
chenyi
itchenyi
python
ipython
coreos
coreos.me
ipython.me
|