置換式密碼加密與解密
明文
密文
什麼是置換式密碼?
置換式密碼(Transposition Cipher)是一種經典的加密算法,它通過重新排列明文中字元的位置來實現加密,而不改變字元本身。與替換式密碼不同,置換式密碼並不改變明文中的字母,而是對字母的位置進行重新排列,因此,明文的字母在密文中保持相同,但順序不同。
置換式密碼的一個常見變體是列置換密碼(Columnar Transposition Cipher),這種方法通常通過將明文寫成多列形式,然後根據預先設定的祕鑰對列進行重新排列來實現加密。
置換式密碼如何加密?
置換式密碼的加密過程如下:
- 準備明文:首先,去除明文中的空格、標點符號等,確保只使用字母(根據需要,可以選擇保留或忽略未知字元)。
- 確定祕鑰:祕鑰是用來決定字母重新排列順序的一個字串(英文單字),通過將每個字母的字母順序轉換為數字,構建一個列的順序。
- 將明文填充為矩陣:將明文按列分組,填充矩陣。
- 列重新排列:根據祕鑰的字母順序重新排列列,每一列會根據祕鑰中字母的字母順序進行排序。
- 生成密文:重新排列後的矩陣會按列合併成密文。
示例
假設明文為 “HELLO WORLD”,祕鑰為 “KEYWORD”。
1. 準備明文並填充矩陣:
祕鑰是“KEYWORD”,表示要將明文分成 7 列,祕鑰各個字母的順序為:[3, 2, 7, 6, 4, 5, 1],填充矩陣:
K | E | Y | W | O | R | D |
---|---|---|---|---|---|---|
3 | 2 | 7 | 6 | 4 | 5 | 1 |
H | E | L | L | O | W | O |
R | L | D | - | - | - | - |
2. 根據祕鑰順序重新排列列:
D | E | K | O | R | W | Y |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
O | E | H | O | W | L | L |
- | L | R | - | - | - | D |
3. 生成密文:
按列(縱向)讀取密文,最終密文為:O ELHRO W L LD。
置換式密碼如何解密?
置換式密碼的解密過程是加密過程的反向操作,我們需要根據密鑰的字母順序,恢復加密時的字元位置,重新排列成原始明文。
- 確定祕鑰:如加密時一樣,我們首先需要確定祕鑰,並將其轉換為字母順序。
- 恢復矩陣:將密文分配到矩陣中,列數與加密時相同;根據密文的長度與祕鑰的列數,確定每列填充的字元。
- 反向排列列:根據祕鑰的字母順序,我們需要按反向順序排列列。
- 恢復明文:將恢復的矩陣按行讀取,得到原始的明文。
示例
假設我們已經得到了密文 “O ELHRO W L LD” 和祕鑰 “KEYWORD”,現在我們需要解密。
1. 確定祕鑰並構建字母順序:
祕鑰為“KEYWORD”,字母順序為:[3, 2, 7, 6, 4, 5, 1]。
2. 恢復矩陣:
將密文按照列數恢復矩陣:
D | E | K | O | R | W | Y |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
O | E | H | O | W | L | L |
- | L | R | - | - | - | D |
3. 反向排列列:
根據祕鑰的字母順序 [3, 2, 7, 6, 4, 5, 1],將表格反向順序排列:
K | E | Y | W | O | R | D |
---|---|---|---|---|---|---|
3 | 2 | 7 | 6 | 4 | 5 | 1 |
H | E | L | L | O | W | O |
R | L | D | - | - | - | - |
4. 恢復明文:
按行(橫向)讀取恢復後的矩陣,得到原始明文“HELLOWORLD”。