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实现微信跳一跳辅助工具步骤详解
Jan 04 Python
基于Django与ajax之间的json传输方法
May 29 Python
python让列表倒序输出的实例
Jun 25 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
Python的高阶函数用法实例分析
Apr 11 Python
Python Django中间件使用原理及流程分析
Jun 13 Python
python简单实现9宫格图片实例
Sep 03 Python
python中str内置函数用法总结
Dec 27 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 Python
Python使用华为API为图像设置多个锚点标签
Apr 12 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
Numpy掩码式数组详解
2018/04/17 Python
值得收藏的10道python 面试题
2019/04/15 Python
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
税务会计岗位职责
2014/02/18 职场文书
幼儿园庆六一活动方案
2014/03/06 职场文书
体育运动会广播稿
2014/10/05 职场文书
师范生见习报告
2014/10/31 职场文书
母亲节寄语大全
2015/02/27 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
政协工作总结2015
2015/05/20 职场文书
离婚代理词范文
2015/05/23 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
MySQL学习必备条件查询数据
2022/03/25 MySQL
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js