假設現在有一串密碼長度為n個字元,並且只會使用到m種字母,字母可以重複,那麼請問最多要猜幾次才能破解呢?我們來試試看列出所有可能的組合。
可以參考以下操作:
例子1,現在密碼長度為2個字元,並只使用到A、B這2個字母於密碼中(n=2, m=2)。
例子2,現在密碼長度為5個字元,並只使用到A、B、C、D、E、F、G、H、I、J這10個字母於密碼中(n=5, m=10)。
例子1,現在密碼長度為2個字元,並只使用到A、B這2個字母於密碼中(n=2, m=2)。
例子2,現在密碼長度為5個字元,並只使用到A、B、C、D、E、F、G、H、I、J這10個字母於密碼中(n=5, m=10)。
-
請選擇密碼長度 n=
-
請選擇使用到的字母種數 m=
最多需嘗試 種組合(mn = mn) 由此可以發現,這樣的問題等同於排列組合中「重複排列」,共有 mn 種排法。
暴力破解法為直接猜測法,因為是破解替換式密碼的密碼表,所以單一字母只會對應到另一個字母,那麼請問最多需要嘗試幾次才能破解呢?
我們先化簡問題,假設此密碼表只用到3種字母,那麼會有幾種密碼表組合呢?
➢ 操作說明:
請你透過按鈕,列出所有可能的密碼表組合後,按下「送出」以完成練習。
我們先化簡問題,假設此密碼表只用到3種字母,那麼會有幾種密碼表組合呢?
➢ 操作說明:
請你透過按鈕,列出所有可能的密碼表組合後,按下「送出」以完成練習。
A | B | C |
? | ? | ? |
已嘗試的密碼表組合:
動腦想想看,假設此密碼表只用到4個字母,那麼會有幾種組合呢?
A | B | C | D |
? | ? | ? | ? |
共計
種
在現代,我們會使用帳號密碼登入系統,而暴力破解法仍是威脅系統安全的一種攻擊手段。
請你在 Google Colab 建立 “1-2 BruteForce.ipynb” 的程式碼,並依據下方實作目標修改參數。
➢ 實作目標
- 請你自定義一段簡單字串,觀察組合總數、比對次數。
- 請你自定義一段複雜字串,觀察組合總數、比對次數。
➢ 想想看
- 當密碼長度及字元種類增加何種程度時,會遇到系統效能不足,無法計算所有組合的情況?
- 暴力破解法的優勢劣勢為何?
- 為何密碼長度及字元種類對於保護密碼是重要的?