乘法密码是简单代替密码的一种。它需要预先知道消息元素的个数,加密的过程其实是相当于对明文消息所组成的数组下标进行加密,然后用明文消息中加密后位置所对应的明文字符代替。
加密过程
设明文消息元素个数为n,密钥为k。
密钥k在选取的时候应满足两个条件:
(1)0<k<n
(2)k与n互素
设明文消息为M,消息元素为m;
则密文消息为C,密文元素为c=m*k mod n;
其解密过程如下:
首先要得到解密密钥,就是要求得加密密钥k模n的逆元;
具体求法为k *mod n=1;
然后计算m=c *mod n即可得到明文消息M。
举例说明如下:
英文字母有26个,即n=26;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
M=m[26]={a , b , c ,d , e , f , g , h , i , j , k , l , m , n , o , p , q , r , s , t , u , v , w , x , y , z };
我们选取密钥k=5;
我们对hello进行加密
hello所对应的数组为[8,5,12,12 15];
由于8*5 (mod 26) =40(mod)26=14;
依次类推,可得到加密后的数组为[ 14 , 25,8,8, 23 ];
对应的密文消息就是nyhhw
我们开始对nyhhw解密
首先要求得解密密钥;
由于5*21(mod 26)=105(mod26)=1;
所以=21;
nyhhw所对应的数组为[ 14 , 25,8,8, 23 ];
由于14*21(mod26)=294(mod26)=8;
依次类推,可得到解密后的数组为[8,5,12,12 15];
对应的明文消息就是hello。