Python实现的排列组合、破解密码算法示例


Posted in Python onApril 12, 2019

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
Python深入学习之上下文管理器
Aug 31 Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
python实现清屏的方法
Apr 30 Python
Python中使用Beautiful Soup库的超详细教程
Apr 30 Python
python 中if else 语句的作用及示例代码
Mar 05 Python
Django安装配置mysql的方法步骤
Oct 15 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
什么是Python包的循环导入
Sep 08 Python
使用python爬取抖音app视频的实例代码
Dec 01 Python
python爬虫线程池案例详解(梨视频短视频爬取)
Feb 20 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 #Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 #Python
详解python执行shell脚本创建用户及相关操作
Apr 11 #Python
python中aioysql(异步操作MySQL)的方法
Apr 11 #Python
很酷的python表白工具 你喜欢我吗
Apr 11 #Python
2019 Python最新面试题及答案16道题
Apr 11 #Python
【python】matplotlib动态显示详解
Apr 11 #Python
You might like
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
js运动事件函数详解
2016/10/21 Javascript
详解vue.js组件化开发实践
2016/12/14 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
Python Tkinter实现简易计算器功能
2018/01/30 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
Python高斯消除矩阵
2019/01/02 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
python实现的Iou与Giou代码
2020/01/18 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
简历中自我评价范文3则
2013/12/14 职场文书
自我评价范文
2013/12/22 职场文书
快递业务员岗位职责
2014/01/06 职场文书
简单租房协议书
2014/04/09 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android