iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0
Security

一天一題picoCTF:從Easy開始的新手生活系列 第 9

Day 9 - 其他常見古典密碼

  • 分享至 

  • xImage
  •  

昨天學了一部分古典密碼,今天來學其他常見的古典密碼吧~

Rail-fence Cipher (欄柵密碼)

Rail-fence 是一種換位式加密,把訊息依照W的形狀排,再依照行來讀取。

舉例:明文是 HELLOWORLD,用 3 層的 Rail-fence 排法如下:

H...O...L
.E.L.W.R.D
..L...O..

把每一行依序讀出來 → 最後密文就是:HOLELWRDLO

解密的時候,就要把字重新分配回去「W字形」位置。

這種密碼在題目裡常常會給一段亂掉的文字,要你嘗試不同的「層數」去解。

Columnar Transposition Cipher

Columnar Transposition 算是換位加密的一種變形,跟剛剛的 Transposition Trial 很像,但這次是把明文寫進表格裡,然後依照「欄位順序」讀取。

舉例:明文是 HELLOWORLD,我們選擇關鍵字 HACK(代表有四欄),先把字母依序填入表格:

H A C K
3 1 2 4
-------
H E L L
O W O R
L D _ _

(多餘的空格用空值填充或留空或由字元代替(例如:_))

接下來依照關鍵字的順序來讀:1 → 2 → 3 → 4

得到密文:EWDLO_HOLLR_

解密的時候依照相同的欄位順序,先切分密文再把它重新填回表格,就能還原出明文

通常題目會給你一段奇怪的英文密文,解題方式就是嘗試不同的「欄數」或「關鍵字排序」,直到能拼回正常句子為止。


Hill Cipher (矩陣加密)

Hill cipher 是一種比較數學化的古典密碼

步驟:

  1. 把明文字母轉成數字(A=0, B=1, …, Z=25)

  2. 選一個n*n的矩陣作為金鑰,例如:

    | 3  3 |
    | 2  5 |
    
  3. 每次取 n 個字母組成向量,然後跟金鑰矩陣相乘(取 mod 26)得到新的向量。

  4. 把新向量再轉回字母,就是加密結果。

例如明文:HI (H=7, I=8)

| 3  3 |   | 7 |   | 45 |   | 19 | → T
| 2  5 | x | 8 | = | 54 | = |  2 | → C

所以 HITC

解密就需要用到「矩陣的逆矩陣 (mod 26)」。

Hill cipher 在題目中通常會給你一段亂碼加上提示是矩陣加密,要用 Python 來做矩陣運算才能解。

了解這些之後應該會有個困惑,那我要怎麼一眼看出來他們是甚麼加密呢

這時候如果題目給了很長的密文的話,我們就可以用——

字頻分析

只要是「替代式加密」的古典密碼(像 Caesar、Hill cipher),因為字母被換掉但字頻還保留下來,所以可以用字頻分析來破解。

在英文裡,E 是最常見的字母,其次是 TAO

https://ithelp.ithome.com.tw/upload/images/20250904/20169105lw5SQO67Ae.png

只要密文夠長,就可以用「字頻分析」來猜測哪些密文字母對應到哪些明文字母,進而解密。

這也是為什麼古典密碼在現代幾乎不可能用來保護訊息,但在 CTF 裡,它們還是很經典的出題方向

字頻分析線上工具: https://quipqiup.com/


以上就是一些常見的古典密碼學,明天會講一點RSA的知識!
想看更多,歡迎明天再來ㄛ~


上一篇
Day 8 - caesar
系列文
一天一題picoCTF:從Easy開始的新手生活9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言