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应用程序在windows下不出现cmd窗口的办法
May 29 Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
Django密码系统实现过程详解
Jul 19 Python
在Python中获取操作系统的进程信息
Aug 27 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
Python打印不合法的文件名
Jul 31 Python
浅析Python requests 模块
Oct 09 Python
python抢购软件/插件/脚本附完整源码
Mar 04 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 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实现微信发红包
2015/12/05 PHP
jQuery 开天辟地入门篇一
2009/12/09 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
python删除过期文件的方法
2015/05/29 Python
python去掉行尾的换行符方法
2017/01/04 Python
Python中动态创建类实例的方法
2017/03/24 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
物业管理求职自荐信
2013/09/25 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript