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中数据解析
May 05 Python
python编码最佳实践之总结
Feb 14 Python
python 执行shell命令并将结果保存的实例
May 11 Python
Python中创建二维数组
Oct 17 Python
Python使用folium excel绘制point
Jan 03 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
pip安装python库的方法总结
Aug 02 Python
python字典的遍历3种方法详解
Aug 10 Python
如何基于pythonnet调用halcon脚本
Jan 20 Python
python中可以声明变量类型吗
Jun 18 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
如何查看python关键字
Jan 17 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
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
vue2.0获取自定义属性的值
2017/03/28 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
实现Python3数组旋转的3种算法实例
2020/09/16 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
应届生污水处理求职信
2013/11/06 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
党支部换届选举方案
2014/05/08 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
贷款委托书怎么写
2014/08/02 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
红楼梦读书笔记
2015/06/25 职场文书
高一语文教学反思
2016/02/16 职场文书
python中的装饰器该如何使用
2021/06/18 Python
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python