Python生成强密码字典文件

2016-09-02 董付国 Python小屋 Python小屋

本文要点在于演示如何使用正则表达式验证密码强度,以及如何生成大量字符的排列。由于下面代码生成的字典过于庞大,所以并没有很直接的应用场景,可对生成的强密码再次进行过滤,仅保留可能性较大的密码,这样可以减小字典体积,但同时也会降低暴力破解的成功率。

from itertools import permutations

import re

import string


#所有备选字符

allLetters = string.ascii_letters + string.digits + ',.;![]()@#$&*'


#用来验证密码强度的正则表达式

#如果字符串中同时包含英文字母大写、小写、数字、标点符号,则认为是强密码

pattern = r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[,.;!\[\]\(\)@#$&*_]).{4,}$'


def generateStrongPwd():

    with open('dict.txt', 'w') as fp:

        for length in range(4, 9):

            #permutations()函数用来生成从n个元素中任选k个得到的所有排列

            for pwd in permutations(allLetters, length):

                #迭代permutations对象时得到的是元组

                #所以需要转换成字符串

                pwd = ''.join(pwd)

                #检查密码强度

                if re.match(pattern, pwd):

                    #如果是强密码,写入字典文件

                    fp.write(pwd)


generateStrongPwd()



温馨提示:单击文章顶部作者名字旁边浅蓝色的“Python小屋”进入公众号,关注后可以查看更多内容!


欢迎转发给您的朋友,或许这正是Ta需要的知识!