仿射密碼加密與解密

明文
密文

什麼是仿射密碼?

仿射密碼(Affine Cipher)是一種經典的對稱加密算法,是替換式密碼的一種變體,它通過數學公式對字母進行加密。仿射密碼的核心思想是使用數學運算將字母映射到另一個字母上,其加密過程基於一個線性方程式,將每個字母的數位值與兩個常數(斜率和截距)結合,生成新的字母。

仿射密碼的加密公式為:

E(x) = (ax + b) mod  m

其中:

仿射密碼的解密公式為:

D(x) = a-1(x - b) mod m

其中,a-1 是斜率 a 的模逆元素,意味著它是與 a 互質的一個數。

仿射密碼如何加密?

  1. 選擇字母表:可以使用標準的字母表(如“ABCDEFGHIJKLMNOPQRSTUVWXYZ”)或者自定義字母表。
  2. 設置斜率(a)和截距(b):設置一個斜率 a,它應當與字母表的長度 m 互質(即它們的最大公約數為1)。另外一個截距 b,它是加密過程中的一個常數。
  3. 轉換明文到數位:將明文中的每個字母轉換為字母表中對應的數位,例如,A=0,B=1,C=2,…,Z=25。
  4. 應用加密公式:對每個數位 x,使用公式 E(x) = (ax + b) mod  m 進行加密。
  5. 輸出密文:將加密後的數位轉換回字母,得到密文。

示例

假設我們使用標準英文字母表(A - Z,長度26),選擇斜率 a = 5 和截距 b = 8,對明文 "HELLO" 進行加密。

1. 將明文轉到字母表數位:

2. 應用加密公式:

所以,最終密文為:RCLLA

仿射密碼如何解密?

  1. 計算斜率的模逆:為了進行解密,需要計算斜率 a 在模 m 下的逆元素 a-1。模逆是指找到一個數 a-1,使得 a × a-1 ≡ 1 mod m。
  2. 應用解密公式:對於每個密文字母的數字表示 x,使用解密公式 D(x) = a-1(x - b) mod m 來解密。

示例

假設密文為 "RCLLA",斜率 a = 5 和截距 b = 8,我們要解密這個密文。

1. 計算斜率 a 的模逆:

斜率 a = 5,我們需要找到 a-1 使得 5 × a-1 ≡ 1 mod  26。

經計算, a-1 = 21,因為 5 × 21 = 105 ≡ 1 mod  26。

2. 轉換密文到數位:

3. 應用解密公式:

所以,RCLLA 對應的明文為:HELLO

如何使用仿射密碼工具?

  1. 輸入明文或密文:根據需求在對應的輸入框內輸入明文或密文。
  2. 設置斜率和截距:設置斜率(a)和截距(b),確保斜率與字母表長度互質,以避免計算錯誤。
  3. 自定義字母表:支持自定義字母表,可以輸入大寫字母、小寫字母、數位,或多語言字元集。
  4. 忽略未知字符:在加密或解密過程中,可以選擇是否忽略未知字符(如空格、標點符號等)。如果選擇忽略,它們將不會影響加解密操作。
  5. 複製和下載結果:加密或解密後的結果可以直接複製,或者通過工具提供的下載選項將結果保存為檔案,方便後續使用。

分享頁面