Python实现的排列组合、破解密码算法示例
2019/7/14 23:20:49
本文主要是介绍Python实现的排列组合、破解密码算法示例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文实例讲述了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数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
这篇关于Python实现的排列组合、破解密码算法示例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门