本位实例为大家分享了Python生成随机密码的实现过程,供大家参考,具体内容如下
写了个程序,主要是用来检测MySQL数据库的空密码和弱密码的,
在这里,定义了三类弱密码:
1. 连续数字,譬如123456,在get_weak_num中实现
2. 连续字母,譬如abcdef,在get_weak_character中实现
当然,个数都是随机的。
3. 数字和字母随机组合。在get_weak_num_character中实现。
同时定义了一个password_exist的列表,用于保存不同的密码。如果新生成的密码在列表中存在,则不进行MySQL数据库的连接,直接到下一次循环。
具体如下:
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
|
#coding=utf8
import random,string,MySQLdb
def get_num():
return random.randint( 0 , 9 )
def get_char():
return random.choice( tuple (string.lowercase))
def choose_any():
return [ str (get_num()),get_char()]
def get_weak_num():
weak_num = []
initial_num = get_num()
for i in range (get_num()):
weak_num.append( str (initial_num + i))
if initial_num + i = = 9 :
break ;
return weak_num
def get_weak_character():
weak_character = []
initial_character = get_char()
for i in range (get_num()):
weak_character.append( chr ( ord (initial_character) + i))
if chr ( ord (initial_character) + i) = = 'z' :
break
return weak_character
def get_weak_num_character():
return [random.choice(choose_any()) for num in range (get_num())]
password_exist = []
for i in range ( 10000 ):
choice = [get_weak_num(), get_weak_character(), get_weak_num_character()]
password = ''.join(random.choice(choice))
print "第" + str (i) + "次密码为:" + password
if password in password_exist:
continue
else :
try :
MySQLdb.connect( '192.168.244.145' , 'root' , password)
print 'The password for MySQL is:' + password
break
except :
continue
password_exist.append(password)
if i = = 9999 :
print 'The password is not so weak~'
|
以上就是本文的全部内容,希望对大家的学习有所帮助。