Python實現(xiàn)的排列組合、破解密碼算法示例
本文實例講述了Python實現(xiàn)的排列組合、破解密碼算法。分享給大家供大家參考,具體如下:
排列組合(破解密碼)
1.排列
itertools.permutations(iterable,n)
參數(shù)一:要排列的序列,
參數(shù)二:要選取的個數(shù)
返回的是一個迭代對象,迭代器中的每一個元素都是一個元組
import itertools #概念:從n個不同元素中取出m(m≤n)個元素,按照一定的順序排成一列,叫做從n個元素中取出m個元素的一個排列(Arrangement)。特別地,當(dāng)m=n時,這個排列被稱作全排列(Permutation) ''' 1 2 3 4 假設(shè)從中取出3個數(shù)字 123 132 213 231 321 312 ''' #需求:從[1,2,3,4]4個數(shù)中隨機取出3個數(shù)進行排列 mylist = list(itertools.permutations([1,2,3,4], 3)) print(mylist) print(len(mylist)) ''' 規(guī)律總結(jié): 4 - 3 24 4 - 2 12 4 - 1 4 排列的可能性次數(shù):n! / (n-m)! '''
2.組合
itertools.combinations(iterable,n)
參數(shù)一:可迭代對象
參數(shù)二:要選取的個數(shù)
返回值:返回一二迭代器,迭代器中的每一個元素都是一個元組
import itertools #概念:從m個不同的元素中,任取n(n≤m)個元素為一組,叫作從m個不同元素中取出n個元素的進行組合 ''' 1 2 3 4 5 中選4個數(shù)的組合方式有幾種? ''' mylist = list(itertools.combinations([1,2,3,4,5], 4)) print(mylist) print(len(mylist)) ''' 規(guī)律總結(jié): 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)
參數(shù)一:可迭代對象,參數(shù)二:重復(fù)的次數(shù),默認為1
import itertools
'''
_ _ _ _ _
'''
mylist = list(itertools.product("0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm", repeat=6))
#可以嘗試10,有可能電腦會卡住
#多線程也不行,電腦內(nèi)存不夠,咋處理都白搭
#print(mylist)
print(len(mylist))
擴展:現(xiàn)在但凡涉及到密碼,一般都會進行加密處理,常用的加密方式有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:
#先直接實現(xiàn),然后再添加異常
try:
str = next(passwd)
time.sleep(0.5)
print(str)
except StopIteration as e:
break
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python?Matplotlib繪制箱線圖boxplot()函數(shù)詳解
箱線圖一般用來展現(xiàn)數(shù)據(jù)的分布(如上下四分位值、中位數(shù)等),同時也可以用箱線圖來反映數(shù)據(jù)的異常情況,下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib繪制箱線圖boxplot()函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-07-07
python實現(xiàn)圖像處理之PiL依賴庫的案例應(yīng)用詳解
這篇文章主要介紹了python實現(xiàn)圖像處理之PiL依賴庫的案例應(yīng)用詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
Elasticsearches的集群搭建及數(shù)據(jù)分片過程詳解
這篇文章主要為大家介紹了Elasticsearches的集群搭建及數(shù)據(jù)分片過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
將不規(guī)則的Python多維數(shù)組拉平到一維的方法實現(xiàn)
這篇文章主要介紹了將不規(guī)則的Python多維數(shù)組拉平到一維的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
詳解TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式
本文主要介紹了TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式,一種是基于tensor(array),另外一種是迭代器,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
Python使用gRPC實現(xiàn)數(shù)據(jù)分析能力的共享
gRPC是一個高性能、開源、通用的遠程過程調(diào)用(RPC)框架,由Google推出,本文主要介紹了Python如何使用gRPC實現(xiàn)數(shù)據(jù)分析能力的共享,感興趣的可以了解下2024-02-02
Python3 tkinter 實現(xiàn)文件讀取及保存功能
tkinter是一個跨平臺的GUI庫,開發(fā)的程序可以在win,linux或者mac下運行,tkinter是python自帶的GUI庫,是對圖形庫TK的封裝。本文通過實例代碼給大家介紹Python3 tkinter 實現(xiàn)文件讀取及保存功能,感興趣的朋友跟隨小編一起看看吧2019-09-09

