加法密碼和乘法密碼結(jié)合就構(gòu)成仿射密碼,仿射密碼的加密和解密算法是:C=?Ek(m)=(k1m+k2) mod?nM=?Dk(c)=k3(c-?k2) mod?n(其中(k3 ×k1)mod26 = 1)
仿射密碼具有可逆性的條件是gcd(k1,?n)=1。當(dāng)k1=1時(shí),仿射密碼變?yōu)榧臃艽a,當(dāng)k2=0時(shí),仿射密碼變?yōu)槌朔艽a。
仿射密碼中的密鑰空間的大小為nφ(n),當(dāng)n為26字母,φ(n)=12,因此仿射密碼的密鑰空間為12×26 = 312。
中文名 仿射密碼
外文名 Affine?cipher
組????成 加法密碼和乘法密碼結(jié)合 舉例三個(gè)字母對(duì)應(yīng)的數(shù)值是0、23、6
利用???
加密舉例
設(shè)密鑰K= (7, 3), 用仿射密碼加密明文hot。
三個(gè)字母對(duì)應(yīng)的數(shù)值是7、14和19。分別加密如下:
(7×7 + 3) mod 26 = 52 mod 26 =0
(7×14 + 3) mod 26 = 101 mod 26 =23
(7×19 + 3) mod 26 =136 mod 26 =6
三個(gè)密文數(shù)值為0、23和6,對(duì)應(yīng)的密文是AXG。
解密舉例
本例是按照上例來(lái)解密的,也就是用仿射密碼解密密文AXG,密鑰k=(7,3)。 三個(gè)字母對(duì)應(yīng)的數(shù)值是0、23、6。
解密如下:由解密Dk(c)=k3(c-?k2) mod?n(其中(k3 ×k1)mod26 = 1);
可知k3×7=1(mod 26)(其實(shí),就是1/mod26),也就是存在整數(shù)t,使7×k3+26t=1。(1)
利用輾轉(zhuǎn)相除法求解k3:[1]
? 26 = 7 * 3 + 5;(2)(對(duì)26作形如:a * b + c,其中 c 就是余數(shù))
7 = 5 * 1 + 2;(3)(作形如: a = c * m + n ,其中 a ,c 是上一步的, m 是乘數(shù) ,n 是余數(shù))
5 = 2 * 2 + 1;(一直循環(huán)上一步,直到余數(shù) n = 1)
進(jìn)行回代:
1 = 5 - 2 * 2= 5 - (7 - 5 * 1) * 2(第一個(gè)2用(3)式來(lái)代替,也就是2 = 7 - 5 * 1)
= 3 * 5 - 2 * 7
= 3 * (26 - 7 * 3) - 2 * 7(5用(2)式來(lái)代替,也就是5 = 26 - 7 * 3)
= -11 * 7 + 3 * 26(直到不用進(jìn)行代替,也就是得到只有7和26的表達(dá)式)
對(duì)比(1)式可知:t = 3 ,k3 = -11;
所以:Dk(c)=k3(c-?k2) mod?n <=>?Dk(c)=-11(c-?3) mod?26 .
對(duì)于第一位 A :-11 ( 0 - 3 ) mod 26 = ( -11 * -3 )mod 26 = 7;
對(duì)于第二位 X :
-11 ( 23 - 3 ) mod 26 = ( -11 * 20 ) mod 26 = ( -220 ) mod 26 = ( 26 * -9 ) + 14 = 14;
([2]??用計(jì)算器求 (-220) mod 26 ,不同的計(jì)算器會(huì)有不同的結(jié)果,百度的計(jì)算器求得就是 14 ,直接百度搜索:(-220) mod 26 就可以了,不能直接在計(jì)算器上輸入 -220mod26 ,那樣會(huì)得出負(fù)數(shù)。其實(shí),可以這樣算,算出(-11)mod 26 =15,再計(jì)算 (15 * 20)mod26 = 14)
對(duì)于第三位 G :
-11 ( 6 - 3 ) mod 26 = ( -11 * 3 )mod 26 = ( -33 )mod 26 = 19;(計(jì)算方法如上)
三個(gè)明文值為 7,14,19,對(duì)應(yīng)的明文是HOT,也就是hot。 |