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中if __name__ == '__main__'作用解析
Jun 29 Python
Django csrf 两种方法设置form的实例
Feb 03 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
在django模板中实现超链接配置
Aug 21 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
python实现超市商品销售管理系统
Oct 25 Python
python计算无向图节点度的实例代码
Nov 22 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
Python decimal模块使用方法详解
Jun 08 Python
使用django自带的user做外键的方法
Nov 30 Python
python中字符串的编码与解码详析
Dec 03 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框架Phpbean说明
2008/01/10 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
canvas知识总结
2017/01/25 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
python根据京东商品url获取产品价格
2015/08/09 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python Flask-web表单使用详解
2017/11/18 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
如何教少儿学习Python编程
2020/07/10 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
中东奢侈品市场:Coveti
2019/05/12 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
公司庆典活动邀请函
2014/01/09 职场文书
公务员综合考察材料
2014/02/01 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书