乘法密码简单实例
乘法密码是简单代替密码的一种。它需要预先知道消息元素的个数,加密的过程其实是相当于对明文消息所组成的数组下标进行加密,然后用明文消息中加密后位置所对应的明文字符代替。
加密步骤
确定明文和密钥
假设明文消息为“ABC”,对应的英文字母数组下标为[1, 2, 3],英文字母共有26个,因此n=26。
选择一个密钥k,这里选择k=5(注意,k需要满足0<k<n且k与n互素,即k和n的最大公约数为1)。
具体加密步骤
对于明文中的每个字符,计算其对应的数组下标与密钥k的乘积,然后对n取模。
E(x)=(k⋅x) mod n
字符A :1×5 mod 26 =5->A
字符B :2×5 mod 26 =10->F
字符C :3×5 mod 26 =15->K
得到密文EJO
具体解密步骤
为了解密,我们需要找到密钥 k=5 关于26的乘法逆元。使用扩展欧几里得算法,我们可以找到21,因为 (5⋅21)mod26=105mod26=1。
然后,对于密文中的每个字符,我们将其对应的数字与逆元 21 相乘,再对26取模。
密文“AFK”,对应的英文字母数组下标为[5, 10, 15]
字符A:521 mod 26=105 mod 26=1->A
字符F:1021 mod 26=210 mod 26=2->B
字符K:15*21 mod 26=315 mod 26=3->C
利用逆元21,解密得到明文ABC