介绍
这篇文章将为大家详细讲解有关如何使用Python实现的排列组合,破解密码算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
具体如下:
排列组合(破解密码)
<强> 1。排列强>
itertools.permutations (iterable, n)
参数一:要排列的序列,
参数二:要选取的个数
返回的是一个迭代对象,迭代器中的每一个元素都是一个元组
import itertools #概念:从n个不同元素中取出米(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(安排)。特别地,当m=n时,这个排列被称作全排列(排列) & # 39;& # 39;& # 39; 1,2,3,4 假设从中取出三个数字 123 132 213 231 321 312 & # 39;& # 39;& # 39; #需求:从(1、2、3、4)4个数中随机取出三个数进行排列 mylist =,列表(itertools.permutations ((1、2、3、4), 3)) 打印(mylist) print (len (mylist)) & # 39;& # 39;& # 39; 规律总结: 4,安康;3,24 4,安康;2,12 4,安康;1,4 排列的可能性次数:n !,/, (n - m) ! & # 39;& # 39;& # 39;
<强> 2。组合强>
itertools.combinations (iterable, n)
参数一:可迭代对象
参数二:要选取的个数
返回值:返回一二迭代器,迭代器中的每一个元素都是一个元组
import itertools #概念:从m个不同的元素中,任取n (n≤m)个元素为一组,叫作从m个不同元素中取出n个元素的进行组合 & # 39;& # 39;& # 39; 1,2,3,4,5,中选4个数的组合方式有几种吗? & # 39;& # 39;& # 39; 时间=mylist 列表(itertools.combinations ([1、2、3、4、5),, 4)) 打印(mylist) print (len (mylist)) & # 39;& # 39;& # 39; 规律总结: m n 5,安康;5,1 5,安康;4,,5 5,安康;3,10 5,安康;2,10 5 ! 120/120 (mn) ! 120/24 (mn) ! 120/6 (mn) ! m !/(n ! x (mn) !) & # 39;& # 39;& # 39;
<强> 3。排列组合强>
itertools.product (iterable,重复=1)
参数一:可迭代对象,参数二:重复的次数,默认为1
import itertools & # 39;& # 39;& # 39; _ _  _ _  _ & # 39;& # 39;& # 39; 时间=mylist 列表(itertools.product (“0123456789 qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm",,重复=6)) 10 #可以尝试,有可能电脑会卡住 #多线程也不行,电脑内存不够,咋处理都白搭 #打印(mylist) 打印(len (mylist)
扩展:现在但凡涉及到密码,一般都会进行加密处理,常用的加密方式有MD5, RSA, DES等
<强> 4。疯狂破解密码强>
伤敌一千自损一万的破解方式
import 时间 出现import itertools # mylist =,列表(itertools.product(“0123456789“,,重复=10)) passwd =, (““. join (x), for x 拷贝itertools.product (“0123456789 qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnm",,重复=6)) #打印(mylist) #打印(len (mylist)) while 真正的: #先才能直接实现,然后再添加异常 尝试才能: ,,,str 下(passwd)=, ,,,time . sleep (0.5) ,,,印刷(str) except 才能;StopIteration  as e: ,,,打破