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简单计算文件夹大小的方法
Jul 14 Python
python UNIX_TIMESTAMP时间处理方法分析
Apr 18 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 Python
django 读取图片到页面实例
Mar 27 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
python实现处理mysql结果输出方式
Apr 09 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
Jan 05 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中动态显示签名和ip原理
2007/03/28 PHP
php xml 入门学习资料
2011/01/01 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
php实现微信支付之退款功能
2018/05/30 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
python写日志封装类实例
2015/06/28 Python
python颜色随机生成器的实例代码
2020/01/10 Python
Python基于内置函数type创建新类型
2020/10/22 Python
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
公务员职务工作的自我评价
2013/11/01 职场文书
临床医师专业个人自我评价
2014/01/08 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
离职证明格式样本
2015/06/12 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
Redis的字符串是如何实现的
2021/10/24 Redis