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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
python 使用shutil复制图片的例子
Dec 13 Python
python多进程重复加载的解决方式
Dec 13 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
python批量修改文件名的示例
Sep 27 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 Python
浅谈Python中对象是如何被调用的
Apr 06 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/07/29 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
Node.js的特点详解
2017/02/03 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
Python实现ping指定IP的示例
2018/06/04 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
百丽国际旗下购物网站:优购
2017/02/28 全球购物
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
高中生校园生活自我评价
2013/09/19 职场文书
行政专员岗位职责
2014/01/02 职场文书
火锅店营销方案
2014/02/26 职场文书
个人委托书格式
2014/04/04 职场文书
理想国读书笔记
2015/06/25 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL
利用JavaScript写一个简单计算器
2021/11/27 Javascript
Python OpenCV形态学运算示例详解
2022/04/07 Python
Python软件包安装的三种常见方法
2022/07/07 Python