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 相关文章推荐
pandas将DataFrame的列变成行索引的方法
Apr 10 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
Python中整数的缓存机制讲解
Feb 16 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
flask应用部署到服务器的方法
Jul 12 Python
对python while循环和双重循环的实例详解
Aug 23 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
Mar 09 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
Pycharm常用快捷键总结及配置方法
Nov 14 Python
scrapy处理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 获取远程文件大小的3种解决方法
2013/07/11 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
linux下编译安装memcached服务
2014/08/03 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
Date对象格式化函数代码
2010/07/17 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python实现两款计算器功能示例
2017/12/19 Python
python实现低通滤波器代码
2020/02/26 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
Python之字典对象的几种创建方法
2020/09/30 Python
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
优秀研究生自我鉴定
2013/12/04 职场文书
2014年科研工作总结
2014/12/03 职场文书
工作岗位职责范本
2015/02/15 职场文书
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers
js前端图片加载异常兜底方案
2022/06/21 Javascript