Python实现的排列组合、破解密码算法示例
作者:微信1257309054 发布时间:2022-01-03 10:42:29
标签:Python,排列组合,破解密码,算法
本文实例讲述了Python实现的排列组合、破解密码算法。分享给大家供大家参考,具体如下:
排列组合(破解密码)
1.排列
itertools.permutations(iterable,n)
参数一:要排列的序列,
参数二:要选取的个数
返回的是一个迭代对象,迭代器中的每一个元素都是一个元组
import itertools
#概念:从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement)。特别地,当m=n时,这个排列被称作全排列(Permutation)
'''
1 2 3 4
假设从中取出3个数字
123
132
213
231
321
312
'''
#需求:从[1,2,3,4]4个数中随机取出3个数进行排列
mylist = list(itertools.permutations([1,2,3,4], 3))
print(mylist)
print(len(mylist))
'''
规律总结:
4 - 3 24
4 - 2 12
4 - 1 4
排列的可能性次数:n! / (n-m)!
'''
2.组合
itertools.combinations(iterable,n)
参数一:可迭代对象
参数二:要选取的个数
返回值:返回一二迭代器,迭代器中的每一个元素都是一个元组
import itertools
#概念:从m个不同的元素中,任取n(n≤m)个元素为一组,叫作从m个不同元素中取出n个元素的进行组合
'''
1 2 3 4 5 中选4个数的组合方式有几种?
'''
mylist = list(itertools.combinations([1,2,3,4,5], 4))
print(mylist)
print(len(mylist))
'''
规律总结:
m n
5 - 5 1
5 - 4 5
5 - 3 10
5 - 2 10
5!
120/120(m-n)!
120/24(m-n)!
120/6(m-n)!
m!/(n!x(m-n)!)
'''
3.排列组合
itertools.product(iterable,repeat=1)
参数一:可迭代对象,参数二:重复的次数,默认为1
import itertools
'''
_ _ _ _ _
'''
mylist = list(itertools.product("0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", repeat=6))
#可以尝试10,有可能电脑会卡住
#多线程也不行,电脑内存不够,咋处理都白搭
#print(mylist)
print(len(mylist))
扩展:现在但凡涉及到密码,一般都会进行加密处理,常用的加密方式有MD5,RSA,DES等
4.疯狂破解密码
伤敌一千自损一万的破解方式
import time
import itertools
#mylist = list(itertools.product("0123456789", repeat=10))
passwd = ("".join(x) for x in itertools.product("0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", repeat=6))
#print(mylist)
#print(len(mylist))
while True:
#先直接实现,然后再添加异常
try:
str = next(passwd)
time.sleep(0.5)
print(str)
except StopIteration as e:
break
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/lm_is_dc/article/details/80174742


猜你喜欢
- 首先说明本文并不是安装教程,网上有很多,这里只是自己遇到的一些问题我是以前安装的tensorflow-gpu的,但是发现现在的学术论文大部分
- 栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top)。 举个例子,栈就想一摞洗干净的盘
- MYSQL的事务处理主要有两种方法。 1、用begin,rollback,commit来实现 begin 开始一个事务 rollback 事
- 自己写的用js读取配置文件的程序 D:\Useful Stuff\Javascript\mytest.txt 文件内容如下 [plugin_
- 禁用admin中models的编辑链接和添加删除按钮方法如下:class MyModelAdmin(models.ModelAdmin):
- 1 Neural Networks 神经网络1.1 Visualizing the data 可视化数据这部分我们随机选取100个样本并可视
- 一、责任链模式责任链模式,将多个处理方法连接成一条链条,请求将在这条链条上流动直到该链条中有一个节点可以处理该请求。通常这条链条是一个对象包
- 一、概述 变量在存储过程中会经常被使用,变量的使用方法是一个重要的知识点,特别是在定义条件这块比较重要。
- MySQL 复制表详解如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等。 如果仅仅使用CREATE TABLE ...
- 不知道有没有人碰到过这样恶心的问题:两张表连接查询并limit,SQL效率很高,但是加上order by以后,语句的执行时间变的巨长,效率巨
- 一、Lambda表达式Lambda表达式又被称之为匿名函数格式lambda 参数列表:函数体def add(x,y): return x+y
- 在讲这个问题之前让我们来先看一段代码: dim sql_injdata,SQL_inj,SQL_Get,SQL_Data,Sql_
- 当下基本所有的目标检测类的任务都会选择基于深度学习的方式,诸如:YOLO、SSD、RCNN等等,这一领域不乏有很多出色的模型,而且还在持续地
- 打开文件import xlrddata = xlrd.open_workbook('路径')获取文件中所有工作表的名称。da
- 前言:Event在python线程间同步是一种常用的方法,本博客以生产者线程和工作者线程为例说明Event在线程间进行10次同步的应用。im
- 1. 什么是链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表
- 本文实例讲述了java 数据库连接与增删改查操作。分享给大家供大家参考,具体如下:1、设置数据库的基本配置信息package mysql;/
- 创建一些工具创建工具是帮助他人的一种很好的方式,而且不用考虑太多复杂的问题或 API 设计。你可以开发一个你最喜欢的框架或平台的模板。你可以
- 开发需求python 3.7+pygame 1.9+演示项目地址https://github.com/Mr-han11/PythonSupe
- 这几天接到一个需求需要吧不同系统的数据库进行同步,需要我做一个中间平台进行连接,瞬间就想到了触发器调用接口然后通过API进行传递再写入另一个