2024年4月1日发(作者:地崩山摧)
《密码学原理与实践(第三版)》课后习题参考答案
(由华中科技大学信安09级提供)
第一章
1.1(李怡)
(a)51 (b)30 (c)81 (d)7422
1.2(贾同彬)
证明:令t1= (-a)mod m ,t2=m-(a mod m),则t1≡t2(mod m).
又 0 1.3 (张天翼) 证明充分性: 若 ab(modm) ,则可得 abkm ,设 bjmr , 0rm , jN ,则有 a(kj)mr ,故有 amodmr ,由假设得 bmodmr ,故 amodmbmodm 证明必要性: 若 amodmbmodm ,则可设 amodmbmodmr ,则有 akmr , bjmr , 其中 j,kN ,因此 ab(kj)m ,即 mab ,故 ab(modm) 综上,问题得证 1.4 (李怡) 令akmr,0rm,则ramodm a 而rakm,所以只需证明k . m araa a 因为k,m-r0,所以1k,即k mmm m 1.5 (李志远) 穷举密钥法来破解移位密码即将这个字符串每个字母移位1,2,3…26次,然后判断这26 个字符串哪个符合英语规则。故我编写 如下的C++来实现如此功能 #include using namespace std; char change(char word) { if(word=='Z')return 'A'; el return word+1; } int main() { cout<<"plea input the string"< char string1[43]; cin>>string1; int n; for(n=1;n<=26;n++) { int num; for(num=0;num<43;num++) { string1[num]=change(string1[num]); } cout< } } 解释:1.代码专为本题编写,故输入字符数不能多于43个,且输入范围仅限大写英语字母 2.将题中的42个字母BEEAKFYDJXUQYHYJIQRYHTYJIQFBQFBQDUYJIIKFUHC输入并回车 3.得到的结果 CFFBLGZEKYVRZIZKJRSZIUZKJRGCREVZKJJLGVIDRE for turn 1 DGGCMHAFLZWSAJALKSTAJVALKSHDSFWALKKMHWJESF for turn 2 EHHDNIBGMAXTBKBMLTUBKWBMLTIETGXBMLLNIXKFTG for turn 3 FIIEOJCHNBYUCLCNMUVCLXCNMUJFUHYCNMMOJYLGUH for turn 4 GJJFPKDIOCZVDMDONVWDMYDONVKGVIZDONNPKZMHVI for turn 5 HKKGQLEJPDAWENEPOWXENZEPOWLHWJAEPOOQLANIWJ for turn 6 ILLHRMFKQEBXFOFQPXYFOAFQPXMIXKBFQPPRMBOJXK for turn 7 JMMISNGLRFCYGPGRQYZGPBGRQYNJYLCGRQQSNCPKYL for turn 8 KNNJTOHMSGDZHQHSRZAHQCHSRZOKZMDHSRRTODQLZM for turn 9 LOOKUPINTHEAIRITSABIRDITSAPLANEITSSUPERMAN for turn 10 MPPLVQJOUIFBJSJUTBCJSEJUTBQMBOFJUTTVQFSNBO for turn 11 NQQMWRKPVJGCKTKVUCDKTFKVUCRNCPGKVUUWRGTOCP for turn 12 ORRNXSLQWKHDLULWVDELUGLWVDSODQHLWVVXSHUPDQ for turn 13 PSSOYTMRXLIEMVMXWEFMVHMXWETPERIMXWWYTIVQER for turn 14 QTTPZUNSYMJFNWNYXFGNWINYXFUQFSJNYXXZUJWRFS for turn 15 RUUQAVOTZNKGOXOZYGHOXJOZYGVRGTKOZYYAVKXSGT for turn 16 SVVRBWPUAOLHPYPAZHIPYKPAZHWSHULPAZZBWLYTHU for turn 17 TWWSCXQVBPMIQZQBAIJQZLQBAIXTIVMQBAACXMZUIV for turn 18 UXXTDYRWCQNJRARCBJKRAMRCBJYUJWNRCBBDYNAVJW for turn 19 VYYUEZSXDROKSBSDCKLSBNSDCKZVKXOSDCCEZOBWKX for turn 20 WZZVFATYESPLTCTEDLMTCOTEDLAWLYPTEDDFAPCXLY for turn 21 XAAWGBUZFTQMUDUFEMNUDPUFEMBXMZQUFEEGBQDYMZ for turn 22 YBBXHCVAGURNVEVGFNOVEQVGFNCYNARVGFFHCREZNA for turn 23 ZCCYIDWBHVSOWFWHGOPWFRWHGODZOBSWHGGIDSFAOB for turn 24 ADDZJEXCIWTPXGXIHPQXGSXIHPEAPCTXIHHJETGBPC for turn 25 BEEAKFYDJXUQYHYJIQRYHTYJIQFBQDUYJIIKFUHCQD for turn 26 经过英语分析,发现当移位密码密钥为17时,字符串有英文含义 LOOK UP IN THE AIR ITS A BIRD ITS A PLANE ITS SUPERMAN (看天上,是一只鸟,是一架飞机,是一位超人) 故移位密码密钥为17 1.6(司仲峰) 对合密钥为 0和13 1.7(陈诗洋) (a) m=30=2*3*5 φ(30)=30*(1-1/2)*(1-1/3)*(1-1/5)=8 故密钥量是 8*30=240 (b)m=100=2 2 *5 2 φ(100)=100*(1-1/2)*(1-1/5)=40 故密钥量是 40*100=4000 (c)m=1225=5 2 *7 2 φ(1225)=1225*(1-1/5)*(1-1/7)=840 故密钥量是 840*1225=1029000 1.8(周玉坤) 解: 在中若元素有逆,则必有gcd(a,m)=1; =1,利用广义欧几里得除法,找到整数s和 、的解法都相 若元素a存在逆使得a t,使得: sa+tm=1,则=s(modm)是a的逆。 似,直接给出结果。 (1)、 gcd(a,28)=1,则a=1,3,5,9,11,13,15,17,19,23,25,27. (2)、 =1, =15, =19, =5, =17, =3, =25, =11, =23, =9, =27 gcd(a,33)=1,则a=1,2,4,5,7,8,10,13,14,16,17,19,20,23,25,26, 28,29,31,32 (3)、 =1, =10, =7, =13, =17,=25,=20,=19, =31, =4, =32 =29 =2, =14, =28, =5, =8, =26, =23, =16, gcd(a,35)=1,则a=1,2,3,4,6,8,9,11,12,13,16,17,18,19,22,23, 24,26,27,29,31,32,33,34 =1, =16, =18, =3, =12,=9,=6, =11, =22, =33, =4, =2 =27, 1.9(薛东) =24, =29, =8, =26, =32, =23, =19, =17, =31, =34 =13 设1≤a≤28,利用反复试验的方法求出a -1 mod29 的值。 解:由乘法逆存在条件gcd(a,29)=1知a=1,2,3, …,28均存在逆元。 计算可得: 1 -1 =1 2 -1 =15 3 -1 =10 4 -1 =22 5 -1 =6 6 -1 =5 7 -1 =25 8 -1 =11 9 -1 =13 10 -1 =3 11 -1 =8 12 -1 =17 13 -1 =9 14 -1 =27 15 -1 =2 16 -1 =20 17 -1 =12 18 -1 =21 19 -1 =26 20 -1 =16 -1-1-1-1-1 21=18 22=4 23=24 24=23 25=7 26 -1 =19 27 -1 =14 28 -1 =28 1.10 (a) d K (y)=6y+19(mod 29) (b) 略 1.11(程玲) (a)证明:加密函数为e(x)=(ax+b) mod n,即可令ax+b≡y( mod n), 等价ax≡y-b( mod n),即x≡aˉ¹(y-b)( mod n),即x≡(aˉ¹y-aˉ¹b)( mod n) 要使k为对合密钥,则a≡aˉ¹( mod n),b≡-aˉ¹b( mod n) 即aˉ¹ mod n ≡a且b(1+aˉ¹)≡0( mod n),也就是b(1+a)≡0( mod n) 反过来,当aˉ¹ mod n ≡a且b(1+a)≡0( mod n)可得 b(1+aˉ¹)≡0( mod n),即b≡-aˉ¹b( mod n),K为对合密钥 (b)解:假设对合密钥为K=(a,b) a要满足gcd(a,15)=1,可得a=1,2,4,7,8,11,13,14 又因为a要满足 aˉ¹ mod 15≡a,则a=1,4,11,14 b需满足b(1+a)≡0( mod 15) 当a=1,即2b≡0( mod 15),可得b≡0( mod 15) 当a=4,即5b≡0( mod 15),可得b=0,3,6,9,12 当a=11,即12b≡0( mod 15),可得b=0,5,10 当a=14,即15b≡0( mod 15),可得b={x|xϵZ 15 } (c)证明:φ(n)=φ(pq)=φ(p)φ(q)=(p-1)(q-1) 首先找满足条件的a,a要满足 aˉ¹ mod n ≡a,即aˉ¹ a≡a 2 ≡1( mod n)且 gcd(a,n)=1 2 a1(modp) a1( mod p) 及等价于 2 , 即 a1(modq) a1( mod q) 根据中国剩余定理,a一共有4个解 当a ≡1(mod p)且 a ≡1(mod q),即 a ≡1(mod n) 又b(1+a)≡0( mod n),则2b≡0( mod n),又因为 gcd(2,n)=1,故b只有一个解 当a ≡1(mod p)且 a ≡-1(mod q),即可令a+1=k 1 p+2, a+1=k 2 q,(k 1 , k 2 ϵZ) 则 gcd(a+1,n)=q,又因为 b(1+a)≡0( mod n),可解得b=pt(mod n) (t=1,2,3……q-1) 即b有q个解。 当a ≡-1(mod p)且 a ≡1(mod q),即可令a+1=k 1 p, a+1=k 2 q+2,(k 1 , k 2 ϵZ) 则 gcd(a+1,n)=p,又因为 b(1+a)≡0( mod n),可解得b=qt(mod n) (t=1,2,3……p-1) 即b有p个解。 当a ≡-1(mod p)且 a ≡-1(mod q),即a=pq-1, 又b(1+a)≡0( mod n),则bn≡0( mod n),b有n个解 则定义在Z n 上的所有仿射密码的对合密钥量是n+p+q+1。 1.12(陈志明) (a)在 Z p 上,2维行向量共有 p 个 其中,零向量(0,0)有1个,非零向量共有 p1 个。 对于零向量(0,0),无法组成可逆矩阵,不予考虑。 对于非零向量,设一个非零向量为(a,b),其中 ab0 , 有向量k(a,b)与(a,b)线性相关,其中k=1,2,……,p-1。 且易证得,当 k 1 k 2 时,有 k 1 (a,b)k 2 (a,b) , 即k(a,b)两两互不相等 由此可得: 与向量(a,b)线性相关的行向量有且仅有p-1个。 故,可将 p1 个非零向量,每p-1个分为一组, 且每组中的行向量俩俩之间线性相关, 共分为p+1组 从p+1组中取两组,从取出的两组中各取一个行向量, 对取出的两个行向量进行排列后可得一个可逆矩阵。 因此可得,可逆矩阵数量为: 222222 C p1 (p1)A 2 (p1)p/2(p1)2(p1)(pp) 2 2 2 22 (b) 1.13(刘庆宾、喻思敏) 32 由12题给出的结论,我们有当p为素数时,有p+p-p种情况使得二维矩阵|A|mod p没有 逆。 对于n=6 如果|A|≡0 mod6,等价{|A|≡0 mod2和|A|≡0 mod3} 例如,对于矩阵中的a11位置,任意两个等式由中国剩余定理一定可以求出唯一的在mod6 下的解。对于分别来自mod2与mod3不可逆的矩阵集合中任意两个对象都可以解得唯一一个 mod6不可逆矩阵,因此所有的使得mod6下矩阵没有逆的情况有(8+4-2)*(27+9-3)=330, 可逆情况有36*36-330=966种 同理 n=26 等价{|A|≡0 mod2和|A|≡0 mod13},矩阵没有逆的情况有(8+4-2)* (169*13+169-13)=23530,可逆情况有169*169*16-23530=433446种 当n=9时 易证|A|在mod9没有逆和|A|≡0 mod3是等价的,只是元素的所在域不同。故不 可逆矩阵个数为9*9*(27+9-3)=2673,可逆矩阵有81*81-3673=2888个 1.14(罗志伟) (a) 因为 ,所以,即有,。 (b) 因为m=2,所以令 为0,所有的密钥对为 其中 1.15(付晓帆) , ,,,且不同时 为K可逆的条件。 11112 25 解:令A= ,B= 4232 ,则 95 17159 (a).由题意知: detA 1 55 ,所以 23 , A = 92 1 A = detA 1 1115 A23A 120 17781254 2136 1 (b).由题意知: detB 21 , B 219546 241320 ,所以 33117221 7165 251122 1 1 B detB B21B 10134 17241 1.16(陈诗洋) (a) Y π -1 (b) 明文: gentlemen do not read each other smail 1.17(祁冠杰) 1 2 2 4 3 6 4 1 5 8 6 3 7 5 8 7 (a) 必要性: 因为π(i)=j,π(j)=i 而且π -1 (j)=i 所以π(i)=π -1 (i) 所以π为对合密钥 充分性: 因为π是对合密钥 所以有π(i)=j从而有π -1 (i)=j 即π(j)=i 综上所述从而得证 (b) 当m=2时,对合密钥为 X 1 2 π(x) 2 1 或者 π(x)={1,2} 当m=3,对合密钥 π(x)={1,2,3}或者π(x)={3,2,1}或者π(x)={1,3,2}或者π(x)={2,1,3} 当m=4,对合密钥 π(x)={1,2,3,4}或者π(x)={1,3,2,4}或者π(x)={1,2,4,3}或者π (x)={1,4,3,2}或者π(x)={2,1,3,4}或者π(x)={2,1,4,3}或者π(x)={3,2,1,4} 或者π(x)={3,4,1,2}或者π(x)={4,2,3,1}或者π(x)={4,3,2,1} 当m=5时,对合密钥为 π(x)={1,2,3,4,5}或者π(x)={1,3,2,4,5}或者π(x)={1,3,2,5,4}或者π (x)={1,4,3,2,5}或者π(x)={1,4,5,2,3}或者π(x)={1,5,4,3,2}或者π (x)={1,5,3,4,2}或者π(x)={2,1,3,4,5}或者π(x)={2,1,4,3,5}或者π (x)={2,1,5,4,3}或者π(x)={2,1,3,5,4}或者π(x)={3,2,1,4,5}或者π (x)={3,4,1,2,5}或者π(x)={3,5,1,4,2}或者π(x)={4,2,3,1,5}或者π (x)={4,3,2,1,5}或者π(x)={4,5,3,1,2}或者π(x)={4,2,5,1,3}或者π (x)={4,2,5,1,3}或者π(x)={5,2,3,4,1}或者π(x)={5,3,2,4,1}或者π (x)={5,2,4,3,1}或者π(x)={5,4,3,2,1} 当m=6时,对合密钥为 π(x)= {1,2,3,4,5,6}or{1,2,3,4,6,5}or{1,2,3,5,4,6}or{1,2,3,6,5,4}or {1,2,4,3,5,6}or{1,2,4,3,6,5}or{1,2,5,4,3,6}or{1,2,5,6,3,4}or {1,2,6,4,5,3}or{1,2,6,5,4,3}or{1,3,2,4,5,6}or{1,3,2,5,4,6}or {1,3,2,6,5,4}or{1,3,2,4,6,5}or{1,4,3,2,5,6}or{1,4,5,2,3,6}or {1,4,6,2,5,3}如此类推 1.18(付鹏) 若(z 0 ,z 1 ,z 2 ,z 3 )=(0,0,0,0),则由z i4 =(z i +z i1 +z i2 +z i4 )mod2可知z k =0(k=0,) 此时周期为1; 若(z 0 ,z 1 ,z 2 ,z 3 )=(0,0,0,1),则由z i4 =(z i +z i1 +z i2 +z i4 )mod2可知,得到的密钥流为: 0001 1000 1100 0110 0011 0001 ......可知周期为5; 由上密码流可知:若(z 0 ,z 1 ,z 2 ,z 3 )的值取为0001,1000,1100,0110,0011,时,密钥流周期都为5 若(z 0 ,z 1 ,z 2 ,z 3 )=(0,0,1,0),则由z i4 =(z i +z i1 +z i2 +z i4 )mod2可知,得到的密钥流为: 0010 1001 0100 1010 可知周期为5 由上密码流可知:若(z 0 ,z 1 ,z 2 ,z 3 )的值取为0010,1001,0100,1010,0101,时,密钥流周期都为5 若(z 0 ,z 1 ,z 2 ,z 3 )=(0,1,1,1),则由z i4 =(z i +z i1 +z i2 +z i4 )mod2可知,得到的密钥流为: 0111 1011 1101 1110 可知周期为5 由上密码流可知:若(z 0 ,z 1 ,z 2 ,z 3 )的值取为0111,1011,1101,1110,1111,时,密钥流周期都为5 由上可知(z 0 ,z 1 ,z 2 ,z 3 )=(0,0,0,0)时,周期为1;其他时刻都有周期为5. 1.19(喻思敏) 由递归关系:0000->0000 周期1 0001:->0011->0111->1111->1110->1101->1010->0101-> 1011->0110->1100->1001->0010->0100->1000->0001 周期15 1.20(郑阳) 证明:设|∑|=m 设状态的周期为T, ∵σ i =f(σ i-1 ,K),σ i+ T = σ i 下一状态只与前一状态相关,当某一状态与 前面某状态重复时,接下来的所有状态都将重复 ∴T≤m, 又z i =g(σ i ,K), ∴z i+T =z i , ∴T z ≤T≤m=|∑|, 即使用这种方法产生的密钥流的周期至多为 |∑| 1.21(陈志坤) 答案:(a)已知F解密为w 频数统计为: A = 5 B = 0 C = 37 D = 8 E = 12 F = 9 G = 23 H = 5 I = 15 J = 7 K = 17 L = 7 M = 5 N = 13 O = 10 P = 6 Q = 1 R = 0 S = 20 T = 0 U = 14 V = 0 W = 5 X = 7 Y = 15 Z = 13 F解密后,为w EMGLOSUDCGDNCUSWYSwHNSwCYKDPUMLWGYICOXYSIPJCKQPKUGKMGOLICGINCGACKSNISACYKZSCKXE CJCKSHYSXCGOIDPKZCNKSHICGIWYGKKGOLDSILKGOIUSIGLEDSPWZUGwZCCNDGYYSwUSZCNXEOJNCGY EOWEUPXEZGACGNwGLKNSACIGOIYCKXCJUCIUZCwZCCNDGYYSwEUEKUZCSOCwZCCNCIACZEJNCSHwZEJ ZEGMXCYHCJUMGKUCY 有频数,大胆猜测C解密为e 。有 EMGLOSUDeGDNeUSWYSwHNSweYKDPUMLWGYIeOXYSIPJeKQPKUGKMGOLIeGINeGAeKSNISAeYKZSeKXE eJeKSHYSXeGOIDPKZeNKSHIeGIWYGKKGOLDSILKGOIUSIGLEDSPWZUGwZeeNDGYYSwUSZeNXEOJNeGY EOWEUPXEZGAeGNwGLKNSAeIGOIYeKXeJUeIUZewZeeNDGYYSwEUEKUZeSOewZeeNeIAeZEJNeSHwZEJ ZEGMXeYHeJUMGKUeY 在和e的双字母组合中eG出现了7次,Ze出现了7次,eK出现了5次,Ae出现了5次, eY出现了4次,eI出现了4次而且Ie出现了3次,Ne出现了4次,且Ge未出现一次,而 G出现23次较高,故猜测I 解密为{r,s,t}中一个,S出现概率较高与e结合较少,猜测S 为o,有 EMGLOoUDeGDNeUoWYowHNoweYKDPUMLWGYIeOXYoIPJeKQPKUGKMGOLIeGINeGAeKoNIoAeYKZo eKXEeJeKoHYoXeGOIDPKZeNKoHIeGIWYGKKGOLDoILKGOIUoIGLEDoPWZUGwZeeNDGYYowUoZeN XEOJNeGYEOWEUPXEZGAeGNwGLKNoAeIGOIYeKXeJUeIUZewZeeNDGYYowEUEKUZeoOewZeeNeIA eZEJNeoHwZEJZEGMXeYHeJUMGKUeY 已知eG,eK出现较多,而Ge,Ke未出现,所以G,K中有一个为a , Ze出现较多,且 wZ出现较多,猜测Z为h,有: EMGLOoUDeGDNeUoWYowHNoweYKDPUMLWGYIeOXYoIPJeKQPKUGKMGOLIeGINeGAeKoNIoAeYKho eKXEeJeKoHYoXeGOIDPKheNKoHIeGIWYGKKGOLDoILKGOIUoIGLEDoPWhUGwheeNDGYYowUoheN XEOJNeGYEOWEUPXEhGAeGNwGLKNoAeIGOIYeKXeJUeIUhewheeNDGYYowEUEKUheoOewheeNeIA ehEJNeoHwhEJhEGMXeYHeJUMGKUeY whee为开头出现了3次,后面均为N,猜测whee为单词开头,N应为{l,z}中一个, wheeNDGYYow出现两次,恰有一单词吻合,猜测其为wheelbarrow,则N解密为l D解密为b,G解密为a,Y解密为r。有 EMaLOoUbeableUoWrowHlowerKbPUMLWarIeOXroIPJeKQPKUaKMaOLIeaIleaAeKolIoAerKho eKXEeJeKoHroXeaOIbPKhelKoHIeaIWraKKaOLboILKaOIUoIaLEboPWhUawheelbarrowUohel XEOJlearEOWEUPXEhaAealwaLKloAeIaOIreKXeJUeIUhewheelbarrowEUEKUheoOewheeleIA ehEJleoHwhEJhEaMXerHeJUMaKUer 已知Uo和Ko出现了3次,由Uh和Kh出现了3次,U,K应该为s和t的顺序 由Uohel知Uo应为一单词,U应该为t,K为s。有 EMaLOotbeabletoWrowHlowersbPtMLWarIeOXroIPJesQPstasMaOLIeaIleaAesolIoAersho esXEeJesoHroXeaOIbPshelsoHIeaIWrassaOLboILsaOItoIaLEboPWhtawheelbarrowtohel XEOJlearEOWEtPXEhaAealwaLsloAeIaOIresXeJteIthewheelbarrowEtEstheoOewheeleIA ehEJleoHwhEJhEaMXerHeJtMaster 由helX猜测X为p,有 EMaLOotbeabletoWrowHlowersbPtMLWarIeOproIPJesQPstasMaOLIeaIleaAesolIoAersho espEeJesoHropeaOIbPshelsoHIeaIWrassaOLboILsaOItoIaLEboPWhtawheelbarrowtohel pEOJlearEOWEtPpEhaAealwaLsloAeIaOIrespeJteIthewheelbarrowEtEstheoOewheeleIA ehEJleoHwhEJhEaMperHeJtMaster 由EtEn,sbPn知E,P为元音,放入后发现E为i ,P为u,有 iMaLOotbeabletoWrowHlowersbutMLWarIeOproIuJesQustasMaOLIeaIleaAesolIoAersho espieJesoHropeaOIbushelsoHIeaIWrassaOLboILsaOItoIaLibouWhtawheelbarrowtohel piOJleariOWitupihaAealwaLsloAeIaOIrespeJteIthewheelbarrowitistheoOewheeleIA ehiJleoHwhiJhiaMperHeJtMaster 剩下O和I最多,猜测为d和n,代人后发现O为n,I为d。有 iMaLnotbeabletoWrowHlowersbutMLWardenproduJesQustasManLdeadleaAesoldoAersho espieJesoHropeandbushelsoHdeadWrassanLbodLsandtodaLibouWhtawheelbarrowtohel pinJlearinWitupihaAealwaLsloAedandrespeJtedthewheelbarrowitistheonewheeledA ehiJleoHwhiJhiaMperHeJtMaster 由第一句话猜测出M为m,L为y。有 imaynotbeabletoWrowHlowersbutmyWardenproduJesQustasmanydeadleaAesoldoAersho espieJesoHropeandbushelsoHdeadWrassanybodysandtodayibouWhtawheelbarrowtohel pinJlearinWitupihaAealwaysloAedandrespeJtedthewheelbarrowitistheonewheeledA ehiJleoHwhiJhiamperHeJtmaster 最后得出明文为 I may not be able to grow flowers .But my garden produces just as many dead leaves, old overshoes pieces of rope and bushels of dead grass anybody sand. Today I bought a wheelbarrow to help in clearing it up. I have alwaysloved and respected the wheelbarrow .It is the one wheel edvehicle of which I am perfect master. (b)由重合指数法 m=1时 重合指数为 0.043718 m=2时 重合指数为 0.044151,0.052792 m=3时 重合指数为0.064296,0.056601,0.056760 m=4时 重合指数为0.048581,0.054138,0.049036,0.060374 m=5时 重合指数为0.056661,0.057093,0.047004,0.049677,0.057251 m=6时 重合指数为0.079101,0.100128,0.066327,0.081633,0.059949,0.089923 所以密钥长度为6 求Mg比较有 第1位Mg(2)= 0.089923 第2位Mg(17)= 0.070554 第3位Mg(24)= 0.058732 第4位Mg (15) = 0.066000 第5位Mg(19)= 0.055786 第6位Mg(14)=0.070429 密钥K =(2,17,24,15,19,14) 明文为 I learned how to calculate the amount of paper needed for a room when I was at school. you multiply the square foot age of the walls by the cubic contents of the floor and ceiling combined and doubleit you ,then allow half the total for openings such as windows and doors .Then you allow the other half for matching the pattern. Then you double the whole thing again to give a margin of error and then you order the paper. (c)频数为 A = 13 B = 21 C = 32 D = 9 E = 13 F = 10 G = 0 H = 1 I = 16 J = 6 K = 20 L = 0 M = 0 N = 1 O = 2 P = 20 Q = 4 R = 12 S = 1 T = 0 U = 6 V = 4 W = 0 X = 2 Y = 1 Z = 4 所以C解密应为e 设加密为ax+b(mod 26) 4a+b=2(mod 26) 若B解密为t 有19a+b=1(mod 26) 解得a=19,b=4,解密为11y+18(mod 26) 破译后文字为 Ymkxknkdobbonoxycksoehdyxpbyxdocdmosxdnopvoebyxcqvybsoehmkbdyxlbkccksd zybdobvozoosvcksdzybdobvkmbyshdyxrscdysboocdexoozyzoonoczveclbsvvkxdcoh zvysdcoddkfkvoebnopysdbowzoozbydoqobkxycpyiobcodxycnbysdc 无意义 若K解密为t 有19a+b=10(mod 26),解得a=4,不合法 若P解密为t 有19a+b=15(mod 26),解得a=13不合法 若I解密为t 有19a+b=8(mod26),解得a=16不合法 若A解密为t,解得a=12不合法 若E解密为t,解得a=14不合法 若R解密为t,解得a=1,b=24,解密为y+2 破译后文字为 msgtglgderreletmkgcewbdmtxrmtdekdctdlexhewrmtkqhmrcewbsgrdmtzrgkkgcd fmrderhefeechkgcdfmrderhgsrmcbdmtjckdmcreekdwteefmfeelekfhwkzrchhgtdkeb fhmcdkeddgpghewrlexmcdreafeefrmdeqergtmkxmuerkedtmklrmcdk 无意义 若F解密为t,解得a=21,b=22,解密为5x+20(mod 26) 破译后文字为 swobonozerrenebsioueqpzsbvrsbzeizweubznevteqrsbimtsrueqpworzsbfroiiouz jsrzerteje eutiouzjsrzertowrsupzsbduizsureeizqbeejsjeeneijtqifruttobziepjtsuziezz ohoteqrnev suzrekjeejrszemerobsivsgeriezbsinrsuzi 无意义 若D解密为t,解得a=7,b=0,解密为15x(mod 26) 破译后文字为 ugivifiperrefevuqiaeolpuvdruvpeqpgeavpfedxeoruvqcxuraeolgirpuvhriqqiap turperxete eaxqiapturperxigrualpuvbaqpuareeqpoveetuteefeqtxoqhraxxivpqeltxuapqepp inixeorfed uaprewteetrupecerivuqdukerqepvuqfruapq 无意义 a=19,b=4.解密a=11,b=8 附明文 ocanadaterredenosaieuxtonfrontestceintdefleuronsglorieuxcartonbrassait porterlepe eilsaitporterlacroixtonhistoireestuneepopeedesplusbrillantxploittt avaleurdef oitrempeeprotegeranosfoyertnosdroits 加标点后(加拿大国歌法语版) OCanada! Terre de nos a?eux, Ton front est ceint de fleurons glorieux! Car ton bras sait porter l'épée, Il sait porter la croix! Ton histoire est une épopée Des plus brillants exploits. Et ta valeur de foi trempé Protégera nos foyers et nos droits; Protégera nos foyers et nos droits (d) 频数统计为 A = 20 B = 25 C = 46 D = 19 E = 17 F = 17 G = 9 H = 7 I = 19 J = 10 K = 30 L = 5 M = 4 N = 5 O = 4 P = 26 Q = 13 R = 22 S = 8 T = 12 U = 9 V = 12 W = 6 X = 6 Y = 5 Z = 7 各个字母均存在而且不少,表明不可能为代换密码和置换密码 根据各种三字母组合,可以判断应该为6字母为一组(相同三字母位置之差大多为6的倍数) 但没有找到维吉尼亚密钥。应该是希尔密码(不知道如何破译) 1.22 (a)(刘庆宾) 证明: 方法一(冒泡排序思想类似): 设Pn~P1的系数依次为Qn’~Q1’,记∑=PnQn’+Pn-1Qn-1’+……+P1Q1’ 结论一:如果存在i,j满足i>=j而且Qi’<=Qj’,交换Qi’与Qj’的位置得到 新的∑’,有∑<=∑’。 证明:∑-∑’= PnQn’+…+PiQi’+…PjQj’+…+P1Q1’-(PnQn’+…+PiQj’+…PjQi’+…+P1Q1’) =(Qi’-Qj’)(Pi-Pj)<=0 假设存在整数k, (1) k=1时,令Qn=max{ Qn’~Q1’},如果Qn’!=Qn,交换Qn’与Qn的位置,则 表达式∑的值增加;否则不交换 (2)k>=2时,我们有Pn~Pk-1的系数依次为Qn~Qk-1. 令Qk=max({Qn’~Q1’}-{ Qn~Qk-1});,同理交换Qk’与Qk的位置,∑的值增 加。 由此类推,当k=n时,得到了命题中给出的式子。在证明过程中保证了Qn’~Q1’ 的任意性,因此当Qn’~Q1’与 Qn~Q1完全对应时,∑达到最大值。 方法二(快速排序思想类似): 与方法一类似,请感兴趣的朋友自己证明一下 (b)略 1.23(孙宏峰) 解:b r e a t h t a k I n g 1 17 4 0 19 7 19 0 10 8 13 16 R U P O T E N T O I F V 17 20 15 14 19 4 13 19 14 8 5 21 我们可以假设m=2,3,4,……,直到找到密钥为止 若m=2,则有 (1,17)=(17,20) ……………………① (4,0)=(15,14) ……………………② (19,7)=(19,4) (19,0)=(13,19) (10,8)=(14,8) (13,6)=(5,21) 由①②可得K=,可以解出K,然后代入其他式中验算K的正确性,同理,可以 求得若m=3,4,……时的密钥K并进行验算,最终求出正确的密钥K 1.24(袁小卉) 根据题意, (3,18,17)=(0,3,8)e k +(b 1 ,b 2 ,b 3 ); (12,18,8)=(18,15,11)e k +(b 1 ,b 2 ,b 3 ); (14,15,11)=(0,24,4)e k +(b 1 ,b 2 ,b 3 ); (23,11,9)=(3,4,16)e k +(b 1 ,b 2 ,b 3 ); (1,25,20)=(20,0,19)e k +(b 1 ,b 2 ,b 3 ); (11,11,2)=(8,14,13)e k +(b 1 ,b 2 ,b 3 ); 可得方程组: 3 18 17 0 3 8 b 1 12 18 8 = 18 15 11 e k + b 1 b 14 15 11 0 24 4 b 1 23 11 9 3 4 16 b 1 1 25 20 = 20 0 19 e k + b 1 b 11 11 12 8 14 13 b 1 两式相减得: 20 -7 -8 3 1 8 -11 7 12 = 2 -15 8 e k -3 -4 1 8 -10 9 右边矩阵的逆为: 2 b 3 2 b 3 2 b 3 2 b 3 2 b 3 2 b 3 ① ② b b b b 6 10 19 22 0 8 24 0 10 5 4 13 故解e k = 0 22 14 8 0 0 带入方程组得b=(8,6,13) 1.25 (喻思敏) 词频统计 LM 3 QE 1 TX 4 YE 1 AG 2 CT 1 UI 1 EW 3 NC 1 LZ UA 1 IS 1 PZ 1 YV 2 AP 2 GQ 1 WY 1 AX 2 FT 1 1 MS 1 QC 1 AD 1 DX 1 NX 1 SN 1 PJ 1 QS 2 RI 1 1 NO 1 CV 1 FV 1 参考代码(部分): for(i=0;i<45;i++) { int m=0; if(in[i][0]==-1)continue; ap[0]=in[i][0]; ap[1]=in[i][1]; for(j=i+1;j<45;j++) { if(in[j][0]==-1)continue; if(in[i][0]==in[j][0]&&in[i][1]==in[j][1]) { m++; in[j][0]=in[j][1]=-1; } } } 其中in已经存储了所有密文对应的值 1 CJ MH #include "stdafx.h" #include #include using std::cin; using std::cout; using std::endl; int in[45][2]; int gcd(int n1,int n2)//最大公约数 { int t; if(n1 { t=n1; n1=n2; n2=t; } if(!(n1%n2))return n2; el{ n1=n1%n2; return gcd(n2,n1); } } int mod(int a,int m) { if(a>=0)return a%m; el if(a+m>0)return a+m; el return mod((-(-a)%m),m); } int mod_convert(int mod,int num)//模mod的逆 { if(gcd(mod,num)!=1)return -1; el { for(int i=1;i<=mod;i++) if((num*i)%mod==1)return i; return -1; } } int mod_convert_matrix(int &a,int &b,int &c,int &d,int m) { int A=a*d-b*c; A=mod(A,m); if(gcd(A,m)!=1)return -1; el{ int _A,t; _A=mod_convert(m,A); t=a;a=d;d=t; b=-b;c=-c; a=_A*a;b=_A*b;c=_A*c;d=_A*d; a=mod(a,m);b=mod(b,m);c=mod(c,m);d=mod(d,m); } return 0; } int mod_mul_matrix(int &a,int &b,int &c,int &d,int a1,int b1,int c1,int d1,int m) { int t1,t2,t3,t4; t1=a*a1+b*c1; t2=a*b1+b*d1; t3=c*a1+d*c1; t4=c*b1+d*d1; a=mod(t1,m);b=mod(t2,m);c=mod(t3,m);d=mod(t4,m); return 0; } void decipher(int &c1,int &c2,int a,int b,int c,int d,int m) { int t1,t2; t1=a*c1+c*c2; t2=b*c1+d*c2; c1=mod(t1,m);c2=mod(t2,m); } void plaintext(char m1,char m2,char n1,char n2,char e1,char e2,char p1,char p2)// 明文对m1m2,n1n2 { //密文对e1e2,p1p2 int a,b,c,d,i,j; int a1,b1,c1,d1; a=m1-'A';b=m2-'A';c=n1-'A';d=n2-'A'; a1=e1-'A';b1=e2-'A';c1=p1-'A';d1=p2-'A'; printf("明文矩阵:nt%d %dnt%d %dn",a,b,c,d); printf("密文矩阵:nt%d %dnt%d %dn",a1,b1,c1,d1); if(mod_convert_matrix(a1,b1,c1,d1,26)==-1)printf("密文矩阵的逆不存在n"); el { //printf("密文矩阵的逆:nt%d %dnt%d %dn",a1,b1,c1,d1); mod_mul_matrix(a1,b1,c1,d1,a,b,c,d,26);//矩阵乘法求出解密矩阵 printf("解密矩阵:nt%d %dnt%d %dn",a1,b1,c1,d1); int pltxt[45][2]; for(i=0;i<45;i++) for(j=0;j<2;j++) pltxt[i][j]=in[i][j]; for(i=0;i<45;i++) decipher(pltxt[i][0],pltxt[i][1],a1,b1,c1,d1,26); for(i=0;i<45;i++) for(j=0;j<2;j++) printf("%c",pltxt[i][j]+'a'); cout< } } void de(char *s) { char m1=s[0],m2=s[1],n1=s[2],n2=s[3],e1=s[4],e2=s[5],p1=s[6],p2=s[7]; plaintext(m1,m2,n1,n2,e1,e2,p1,p2); plaintext(m1,m2,n1,n2,p1,p2,e1,e2); } int main(int argc, char* argv[]) { int i,j,ap[2]; freopen("","r",stdin); freopen("","w+",stdout); for(i=0;i<45;i++) { char temp=0; cin>>temp; in[i][0]=temp-'A'; cin>>temp; in[i][1]=temp-'A'; } //TX 4 LM 3 EW 3 //TH HE IN ER AN RE ED ON //de("THHETXLM"); //de("HEINTXLM"); de("THINTXLM");//TH->LM IN->TX return 0; } 解密最后得到对应关系TH->LM IN->TX,前面明文,后面密文 明文矩阵: 19 7 8 13 密文矩阵: 11 12 19 23 解密矩阵: 23 21 13 16 明文内容: The king was in his count ing hou counting out his money the queen was in the parlour eating bread and honeyz 1.26(刘婉嬿) (a)将密文写成m*n的矩阵,然后按行构成明文 (b) 6*7 mreadue yunhsar aycrorn mltoyro rqoyegg atrwodw 7*6 mucoed yytyoe alowur mqrdan rtasro aehorg rnrygw 2*21 marryqecoarydoeurgr ymaultntrhowsyoardw 21*2 mo yy aw md rs ao ry ue yo iu qa tr er ng cd te or rn ao hg rw moyyawmdrsaoryueyoiuqatrerngcdteorrnaohgrw 14*3 mce yto aou mra rar ahr rrg uod yye ywr gdn tso eog nyw 3*14 mmrietaodyureo yruqnohyagrg aaytcrrwoordnw 1.27(刘一麟) 在 2 上 (a)对于任意的i≥1 v mi (z mi ,z mi1 ,...,z mim1 ) z mi c j z ij mod2 j0 m1 m1 j0 m1 j0 v mi ( c j z ij mod2, c j z i1j mod2,..., c j z mi1j ) j0 m1 即 v mi (b) cv j0 m1 jij mod2 0 v 1 1 v 2 ... h1 v h 0 (h≤m+1) v h j v j1 mod2 j0 h2 (c) v h (z h ,z h1 ,...,z hm1 ) i≥1所以h-1+i≥h 当i≤m时h-1+i≤h+m-1 由 v h j0 h2 j0 h2 j v j1 mod2 z h1i j z ji mod2 当i>m时由 z i z im 亦可得 z h1i h2 j0 j0 h2 j z ji mod2 故 z h1i j z ji mod2 (d) 若h≤m则h-1 z h1i j z ji mod2 与 z mi c j z ij mod2 矛盾 j0j0 h2m1 故h=m+1 从而矩阵必为可逆的 1.28(刘庆宾) 密文:malvvmafbhbuqptsoxaltgvwwrg 参考代码: #include "stdio.h" #include "conio.h" #include "string.h" #define MAX 500 void archkey(){ char c[MAX],p[MAX]; /*c存储待分析的密文,p存储z26空间下不同key对应的明文 */ int len,key,i; printf("输入密文(长度小于500):n"); gets(c); len=strlen(c); for(key=0;key<26;key++){ p[0]=(c[0]-'a'+26-key)%26+'a'; /* 解密出第一个明文*/ for(i=1;i p[i]=(c[i]+26-p[i-1])%26+'a'; /*在解出得第一个明文基础上,利用自动密钥密 码规则接触剩下的明文*/ p[i]=0; printf("当 key=%d时,明文:n",key); puts(p); printf("n"); } } void main(){ archkey(); system("pau"); } 输入密文(长度小于500): 当 key=0时,明文: moxyxpluhabtxsbrxaaliyxzxum 当 key=1时,明文: lpwzwqkvgbauwtaswbzmhzwawvl 当 key=2时,明文: kqvavrjwfczvvuztvcyngavbvwk 当 key=3时,明文: jrubusixedywuvyuudxofbucuxj 当 key=4时,明文: istctthydexxtwxvtewpectdtyi 当 key=5时,明文: htsdsugzcfwysxwwsfvqddszh 当 key=6时,明文: gurervfabgvzryvxrgurcerfrag 当 key=7时,明文: fvqfqwebahuaqzuyqhtsbfqgqbf 当 key=8时,明文: ewpgpxdczitbpatzpistagphpce 当 key=9时,明文: dxohoycdyjscobsaojruzhoiodd 当 key=10时,明文: cyninzbexkrdncrbnkqvyinjnec 当 key=11时,明文: bzmjmaafwlqemdqcmlpwxjmkmfb 当 key=12时,明文: aalklbzgvmpflepdlmoxwklllga 当 key=13时,明文: zbklkcyhunogkfoeknnyvlkmkhz 当 key=14时,明文: ycjmjdxitonhjgnfjomzumjnjiy 当 key=15时,明文: xdiniewjspmiihmgiplatnioijx 当 key=16时,明文: wehohfvkrqljhilhhqkbsohphkw 当 key=17时,明文: vfgpggulqrkkgjkigrjcrpgqglv 当 key=18时,明文: ugfqfhtmpsjlfkjjfsidqqfrfmu 当 key=19时,明文: thereisnotimeliketheprent 当 key=20时,明文: sidsdjronuhndmhldugfosdtdos 当 key=21时,明文: rjctckqpmvgocngmcvfgntcucpr 当 key=22时,明文: qkbublpqlwfpbofnbwehmubvbqq 当 key=23时,明文: plavamorkxeqapeoaxdilvawarp 当 key=24时,明文: omzwznnsjydrzqdpzycjkwzxzso 当 key=25时,明文: nnyxyomtizcsyrcqyzbkjxyyytn Key=19时there is no time like the prent 1.29(郭颖斐) (a)描述一下怎样利用重合指数法来确定首次用来加密的密钥字的长度,然后 找到它。 (b)通过分析下列密文来测试你的方法 IYMYSILONRFNCQXQJEDSHBUI······· A、首先要将密码还原成单纯的维吉尼亚密码: 以第二问中的密文为例: 当m=1时,将密文的每一个字母当成一组,即第一组为I,第二组为Y, 第三组为M ,第四组为Y …… 然后将密文还原成单纯的维吉尼亚密码,即 I→I、Y→X(退一位)、M →K(退两位)、Y→V(退三位)…… 将对应后的密文重组, 密文变成 IXKV······ 计算重合指数。 当m=2时,将密文的每两个字母当成一组,即第一组为IY,第二组为 MY,第三组为SI,第四组为LO …… 然后将密文还原成单纯的维吉尼亚密码,即 IY→IY、MY→LX(退一位)、 SI→QG(退两位)、LO→IL(退三位)…… 将对应后的密文重组, 密文变成 IYLXQGIL······ 计算重合指数。 同理计算 当m=3时…… 当m=4时…… …… 最终计算到合适的重合指数就能确定m的值。计算Mg的方法可以推测 出密钥字。 B、第二问计算不出来 1.30(林武) 穷举结果为: aqndwbhapnkjhwaxjyhwhanpjdjynaqjohzypzypdjobannykjoyphjdijtp kjqixtokwqsfoxkzfroxokqwfifrqkjfvoerwerwifvtkqqrsfvrwoficfpw sfjczpvsxjugvzglvzvsjxgcgljsfgyvhlxhlxcgypsjjlugylxvgcagwx ugfaewyuzfmbyeuhbdyeyufzbabdfugbryodzodzabrwuffdmbrdzybakbxz mbgkhxrmegntrhmotirhrmgetktigmbtlrvieviektlxmggintliertkstze ntbsozlnhbqplonvpclolnbhpspcbntpdlychychspdznbbcqpdchlpsupeh qptuvedqotjwdvqywadvdqtowuwatqpwidraoraouwieqttajwiaodwumwho jwpmyhijvpfxiyjrxkiyijpvxmxkpjwxcilkvlkvmxchjppkfxckvixmnxov fxwnrocfywgzcrflzscrcfwyznzswfxzacdsydsynzaofwwsgzasycznqzvy gzxqlvagrxbealgdeualagxreqeuxgzekaiuriurqekvgxxubekuraeqjeyr bezjdykblzthkdbihmkdkbzlhjhmzbehskcmlcmljhsybzzmthsmlkhjfhrl thefirstdepositconsistedofonethousandandfourteenpoundsofgold pohgclupihwvucpavqucuphivgvqhpovmukqikqigvmlphhqwvmqiuvgbvdi wvobadmwcoxymawkyjmamwocybyjowvynmsjcsjcbyndwoojxynjcmybtyic xyvtkinxavzrnkxsrfnknxvartrfvxyrqnufaufatrqixvvfzrqfanrtprca zrypscqzkyelqszulgqsqzyklplgyzrljqmgkmgkpljczyygeljgkqlpwlak elrwuajesrhdjuemdbjujersdwdbreldfjnbsnbswdfaerrbhdfbsjdwxdks hdlxmkfhuloifmhnitfmfhluixitlhdigfqtuqtuxigkhlltoigtufixzisu oidznsgomdvcgnoqcpgngodmczcpdoicbgjpmjpmzcbsoddpvcbpmgczecum vciequbvniyabqvjawbqbvinaeawivcatbfwnfwneatuviiwyatwnbaehamn yachjmtyqcrktjyfkxtjtycqkhkxcyakptgxqgxqhkpmyccxrkpxqtkhoknq rkaofnprjalspfrgszpfprajsoszarkswpbzjbzjoswnraazlswzjpsovsqj lskvgqwlfkduwglbuewgwlkfuvueklsuxwteftefvuxqlkkeduxefwuvyujf dusybjxdgsimxbdtmhxbxdsgmymhsdumzxphgphgymzjdsshimzhgxmyrmfg imurtfzibucnztipnoztziubnrnouimnezwobwobrnefiuuocneobznrlngb cnmlpgectmaqepcwqvepecmtqlqvmcnqhexvtxvtlqhgcmmvaqhvteqldqbt 所以 k=11 明文为:the first deposit consisted of one thousand and fourteen pounds of gold
本文发布于:2024-04-01 12:24:03,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/171194544362554.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:密码学答案.doc
本文 PDF 下载地址:密码学答案.pdf
留言与评论(共有 0 条评论) |