仿射密码简单实例
仿射密码为单表加密的一种,字母系统中所有字母都藉一简单数学方程加密,对应至数值,或转回字母,下面以明文“ABC”为例,进行仿射密码加解密
仿射密码加解密步骤
选择密钥,确定加密函数:
在仿射密码中,需要选择两个整数a和b作为加密密钥。m是字母的数目,在这个例子中,m为26,因为英文字母表有26个字母。
其中,a必须与字母表的大小m互质,因为a的乘法逆元素仅存在于a与m互质条件下。
为了简化,这里选择a=5,b=8作为密钥。
加密函数为:
E(x)=(ax+b)mod m
E(x)=(5x+8)mod 26
求逆元、获得解密函数
解密函数:
为了解密,我们需要找到 a 在模 m 下的逆元 。由于 a=5 和 m=26 互质,逆元存在。通过扩展欧几里得算法,我们可以找到逆元21,因为 此处满足等式1=5×21 (mod 26)
解密函数为:
D(y)=21(y-8) mod 26
具体加密步骤
明文转数字:
以明文“ABC”为例、将明文“ABC”中的每个字母对应到一个数字上。按照A=0,B=1,C=2,…,Z=25的对应关系,明文“ABC”对应的数字序列为0,1,2。
加密运算:
对数字序列中的每个数字x,执行加密运算y = (ax + b) mod m。
将x=0,1,2分别代入y = (5x + 8) mod 26,得到:
当x=0时,y = (5×0 + 8) mod 26 = 8 mod 26 = 8
当x=1时,y = (5×1 + 8) mod 26 = 13 mod 26 = 13
当x=2时,y = (5×2 + 8) mod 26 = 18 mod 26 = 18
数字转密文:
将加密后得到的数字8,13,18对应回字母表上的字母。按照0=A,1=B,2=C,…,25=Z的对应关系,数字8,13,18对应的字母分别为I,N,S。
因此,明文“ABC”加密后的密文为“INS”。
具体解密步骤
密文转数字
I → 8
N → 13
S → 18
代入解密函数
D(y)=21(y-8) mod 26,得到对应数值0、1、2,还原为字母即得到明文ABC