基本信息
乘法密碼是簡單代替密碼的一種。
它需要預先知道訊息元素的個數,加密的過程其實是相當於對明文訊息所組成的數組下標進行加密,然後用明文訊息中加密後位置所對應的明文字元代替。
加密過程
設明文訊息元素個數為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。