本例是按照上例来解密盯宽的,也就是用仿射密码解密密文AXG,密钥k=(7,3)。
三个字母对应的数值是0、23、6。解密如下:
由解密Dk(c)=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1);
可顷悔知k3×7=1(mod 26)(其实,就是1/mod26),也就是存在整数t,使7×k3+26t=1。(1)
利用辗转相除法求解k3:
26 = 7 * 3 + 5;(2)(对26作形如:a * b + c,其中 c 就是余数)
7 = 5 * 1 + 2;(3)(作形如: a = c * m + n ,其中 a ,c 是上一步的, m 是乘数 ,n 是余数)
5 = 2 * 2 + 1;(一直循环上一步,直到余数 n = 1)
进行回代:
1 = 5 - 2 * 2
= 5 - (7 - 5 * 1) * 2(第一个2用(3)式来代替,也就是2 = 7 - 5 * 1)
= 3 * 5 - 2 * 7
= 3 * (26 - 7 * 3) - 2 * 7(5用(2)式来代替,也就是5 = 26 - 7 * 3)
= -11 * 7 + 3 * 26(直到不用进行代替,也就是得到只有7和26的表达式)
对比(1)式可知:t = 3 ,k3 = -11;
所以:Dk(c)=k3(c- k2) mod n <=>Dk(c)=-11(c- 3) mod 26 .
对于第一位 A :
-11 ( 0 - 3 ) mod 26 = ( -11 * -3 )mod 26 = 7
对于第二位 X :
-11 ( 23 - 3 ) mod 26 = ( -11 * 20 ) mod 26 = ( -220 ) mod 26 = ( 26 * -9 ) + 14 = 14
( 用计算器求 (-220) mod 26 ,不同的计算器会有不同的结果,百度的计算器求得就是 14 ,直接百度搜索:(-220) mod 26 就可以了,不能直接在计算器上输入 -220mod26 ,那样会得出负数。其实,可以这样算,算出(-11)mod 26 =15,再计算 (15 * 20)mod26 = 14)
对于第三位 G :
-11 ( 6 - 3 ) mod 26 = ( -11 * 3 )mod 26 = ( -33 )mod 26 = 19(计算方法如上)
三个明文值为 7,14,19,对应的凯乎亮明文是HOT,也就是hot。
码和乘法密码联合起来,就得到了所谓的仿射密码(affine cipher)—— 两种密码与一对密钥的组合。乘法密码使用第一个密钥,加法密码使用第二个密钥。如图3-11所示,仿射密码其实就是被先后使用的两种密码。我们本来可以提出一种有关加密和解密的复杂运算,如C = (P ′ k1 + k2) mod 26和P = ((C - k2) ′ k1-1) mod 26。然而,我们棚空用临时结果(T)表示两种单独的运算,以表明无论什么时候使用密码组合,均需确保在行的另链春瞎一端要有一个逆,该逆在加密和解密过程中使用的顺序是相反森毕的。如果加法是加密过程中的最终运算,那么减法就是解密过程中的初始运算。在仿射密码中,明文P和密文C的关系是
图3-11 仿射密码
例3.9
C:\Users\使用者名称\Documents\亮陆Rockstar Games\GTA V到此路敬缺顷径找到settings把<DX_Version value="1" /扮型 ,0改成1就好了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)