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学习教程之常用的内置函数大全
Jul 14 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
实践Vim配置python开发环境
Jul 02 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
3种python调用其他脚本的方法
Jan 06 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
python函数定义和调用过程详解
Feb 09 Python
Python 解析简单的XML数据
Jul 24 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 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静态调用非静态方法的应用分析
2013/05/02 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
2017/11/20 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
简单学习vue指令directive
2016/11/03 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
高校自主招生自荐信
2013/12/09 职场文书
模范家庭事迹材料
2014/02/10 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
超市开店计划书
2014/09/15 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
2015年实习单位评语
2015/03/25 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP