前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python生成强密码字典文件

Python生成强密码字典文件

作者头像
Python小屋屋主
发布2018-04-16 14:39:37
1.5K0
发布2018-04-16 14:39:37
举报
文章被收录于专栏: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()

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档