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

后記

【后記】為了讓大家能夠輕松學編程,我創建了一個公眾號【輕松學編程】,里面有讓你快速學會編程的文章,當然也有一些干貨提高你的編程水平,也有一些編程項目適合做一些課程設計等課題。

也可加我微信【1257309054】,拉你進群,大家一起交流學習。
如果文章對您有幫助,請我喝杯咖啡吧!

公眾號

公眾號

贊賞碼

關注我,我們一起成長~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM