置換式密碼加密與解密

明文
密文

什麼是置換式密碼?

置換式密碼(Transposition Cipher)是一種經典的加密算法,它通過重新排列明文中字元的位置來實現加密,而不改變字元本身。與替換式密碼不同,置換式密碼並不改變明文中的字母,而是對字母的位置進行重新排列,因此,明文的字母在密文中保持相同,但順序不同。

置換式密碼的一個常見變體是列置換密碼(Columnar Transposition Cipher),這種方法通常通過將明文寫成多列形式,然後根據預先設定的祕鑰對列進行重新排列來實現加密。

置換式密碼如何加密?

置換式密碼的加密過程如下:

  1. 準備明文:首先,去除明文中的空格、標點符號等,確保只使用字母(根據需要,可以選擇保留或忽略未知字元)。
  2. 確定祕鑰:祕鑰是用來決定字母重新排列順序的一個字串(英文單字),通過將每個字母的字母順序轉換為數字,構建一個列的順序。
  3. 將明文填充為矩陣:將明文按列分組,填充矩陣。
  4. 列重新排列:根據祕鑰的字母順序重新排列列,每一列會根據祕鑰中字母的字母順序進行排序。
  5. 生成密文:重新排列後的矩陣會按列合併成密文。

示例

假設明文為 “HELLO WORLD”,祕鑰為 “KEYWORD”。

1. 準備明文並填充矩陣:

祕鑰是“KEYWORD”,表示要將明文分成 7 列,祕鑰各個字母的順序為:[3, 2, 7, 6, 4, 5, 1],填充矩陣:

KEYWORD
3276451
HELLOWO
RLD----

2. 根據祕鑰順序重新排列列:

DEKORWY
1234567
OEHOWLL
-LR---D

3. 生成密文:

按列(縱向)讀取密文,最終密文為:O ELHRO W L LD

置換式密碼如何解密?

置換式密碼的解密過程是加密過程的反向操作,我們需要根據密鑰的字母順序,恢復加密時的字元位置,重新排列成原始明文。

  1. 確定祕鑰:如加密時一樣,我們首先需要確定祕鑰,並將其轉換為字母順序。
  2. 恢復矩陣:將密文分配到矩陣中,列數與加密時相同;根據密文的長度與祕鑰的列數,確定每列填充的字元。
  3. 反向排列列:根據祕鑰的字母順序,我們需要按反向順序排列列。
  4. 恢復明文:將恢復的矩陣按行讀取,得到原始的明文。

示例

假設我們已經得到了密文 “O ELHRO W L LD” 和祕鑰 “KEYWORD”,現在我們需要解密。

1. 確定祕鑰並構建字母順序:

祕鑰為“KEYWORD”,字母順序為:[3, 2, 7, 6, 4, 5, 1]。

2. 恢復矩陣:

將密文按照列數恢復矩陣:

DEKORWY
1234567
OEHOWLL
-LR---D

3. 反向排列列:

根據祕鑰的字母順序 [3, 2, 7, 6, 4, 5, 1],將表格反向順序排列:

KEYWORD
3276451
HELLOWO
RLD----

4. 恢復明文:

按行(橫向)讀取恢復後的矩陣,得到原始明文“HELLOWORLD”。

分享頁面