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绘制MySQL数据图实现数据可视化
Mar 30 Python
Python实现比较两个列表(list)范围
Jun 12 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
Python 爬虫图片简单实现
Jun 01 Python
基于python3 类的属性、方法、封装、继承实例讲解
Sep 19 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
Python堆排序原理与实现方法详解
May 11 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
Feb 13 Python
python多线程分块读取文件
Aug 29 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
php 购物车实例(申精)
2009/05/11 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
第一次接触神奇的Bootstrap表单
2016/07/27 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
angularjs实现天气预报功能
2020/06/16 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
python 轮询执行某函数的2种方式
2020/05/03 Python
使用python把xmind转换成excel测试用例的实现代码
2020/10/12 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
初中生学习的自我评价
2013/11/14 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
大学军训感言300字
2014/03/09 职场文书
学历公证委托书
2014/04/09 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
详解Python描述符的工作原理
2021/06/11 Python