您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guā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實現(xiàn)的排列組合、破解密碼算法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。