Python实现的排列组合、破解密码算法示例

作者:微信1257309054 时间:2022-01-03 10:42:29 

本文实例讲述了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程序设计有所帮助。

来源:https://blog.csdn.net/lm_is_dc/article/details/80174742

标签:Python,排列组合,破解密码,算法
0
投稿

猜你喜欢

  • 简单文件操作python 修改文件指定行的方法

    2022-07-13 15:02:52
  • Jupyter notebook远程访问服务器的方法

    2022-12-25 22:04:36
  • Python代理抓取并验证使用多线程实现

    2022-07-10 07:04:19
  • jupyter实现重新加载模块

    2023-12-16 20:46:45
  • SQL语句实例说明 方便学习mysql的朋友

    2012-11-30 20:02:43
  • python机器学习之神经网络

    2023-11-10 21:39:19
  • Python之Web框架Django项目搭建全过程

    2022-03-21 03:06:08
  • Python实现将通信达.day文件读取为DataFrame

    2022-07-31 23:33:20
  • 为什么首页最后设计

    2009-07-17 19:03:00
  • Python打印不合法的文件名

    2021-06-29 03:40:19
  • Python中itertools库的四个函数介绍

    2021-05-04 14:34:05
  • Python实现壁纸下载与轮换

    2022-07-01 19:19:19
  • asp提高首页性能的一个技巧

    2008-04-05 06:54:00
  • python snownlp情感分析简易demo(分享)

    2021-07-18 04:32:35
  • opencv 图像滤波(均值,方框,高斯,中值)

    2022-12-04 23:41:07
  • Numpy中的repeat函数使用

    2023-03-06 19:16:38
  • 我的css样式写法总结

    2009-01-18 13:04:00
  • python+tkinter编写电脑桌面放大镜程序实例代码

    2023-08-02 17:10:43
  • firefox 2正则表达式

    2008-08-25 19:15:00
  • 用python实现批量重命名文件的代码

    2023-01-02 09:09:20
  • asp之家 网络编程 m.aspxhome.com