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 ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
Python 2.7中文显示与处理方法
Jul 16 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
python解析yaml文件过程详解
Aug 30 Python
3种python调用其他脚本的方法
Jan 06 Python
Python try except异常捕获机制原理解析
Apr 18 Python
Python退出时强制运行一段代码的实现方法
Apr 29 Python
Python接口测试数据库封装实现原理
May 09 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
OpenCV+python实现实时目标检测功能
Jun 24 Python
10个示例带你掌握python中的元组
Nov 23 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/23 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
php实现将Session写入数据库
2015/07/26 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python输出9*9乘法表的方法
2015/05/25 Python
20招让你的Python飞起来!
2016/09/27 Python
python制作websocket服务器实例分享
2016/11/20 Python
python抽取指定url页面的title方法
2018/05/11 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Tensorflow加载Vgg预训练模型操作
2020/05/26 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
英文推荐信格式范文
2014/05/09 职场文书
免职证明样本
2014/10/23 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
企业计划生育责任书
2015/05/09 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
JavaScript分页组件使用方法详解
2021/07/26 Javascript