仿射密码加密与解密

明文
密文

什么是仿射密码?

仿射密码(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. 复制和下载结果:加密或解密后的结果可以直接复制,或者通过工具提供的下载选项将结果保存为文件,方便后续使用。

分享页面