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脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
python3.5安装python3-tk详解
Apr 26 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
windows python3安装Jupyter Notebooks教程
Apr 13 Python
Python selenium环境搭建实现过程解析
Sep 08 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 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与MySQL交互使用详解
2006/10/09 PHP
PHP入门学习的几个不错的实例代码
2008/07/13 PHP
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
域名和cookie问题(域名后缀)
2012/10/10 PHP
简单实现PHP留言板功能
2016/12/21 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
SWFObject Flash js调用类
2008/07/08 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
js智能获取浏览器版本UA信息的方法
2016/08/08 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
js 获取html5的data属性实现方法
2017/07/28 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
浅谈python之新式类
2018/08/12 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
C#笔试题和英文面试题
2013/02/07 面试题
缓刑人员的思想汇报
2014/01/11 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
爱心活动计划书
2014/04/26 职场文书
如何写通讯稿
2015/07/22 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电