密码学答案

更新时间:2024-04-01 12:24:03 阅读: 评论:0

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 (张天翼)

证明充分性:

ab(modm)

,则可得

abkm

,设

bjmr

0rm

jN

,则有

a(kj)mr

,故有

amodmr

,由假设得

bmodmr

,故

amodmbmodm

证明必要性:

amodmbmodm

,则可设

amodmbmodmr

,则有

akmr

bjmr

其中

j,kN

,因此

ab(kj)m

,即

mab

,故

ab(modm)

综上,问题得证

1.4

(李怡)

令akmr,0rm,则ramodm

a

而rakm,所以只需证明k



.

m



araa

a

因为k,m-r0,所以1k,即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

a1(modp)

a1( mod p)

及等价于

2

, 即

a1(modq)

a1( 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个,非零向量共有

p1

个。

对于零向量(0,0),无法组成可逆矩阵,不予考虑。

对于非零向量,设一个非零向量为(a,b),其中

ab0

有向量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个。

故,可将

p1

个非零向量,每p-1个分为一组,

且每组中的行向量俩俩之间线性相关,

共分为p+1组

从p+1组中取两组,从取出的两组中各取一个行向量,

对取出的两个行向量进行排列后可得一个可逆矩阵。

因此可得,可逆矩阵数量为:

222222

C

p1

(p1)A

2

(p1)p/2(p1)2(p1)(pp)

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

55

,所以

23

A

=



92

1

A

=

detA

1

1115

A23A



120





17781254



2136

1

(b).由题意知:

detB

21

,

B

219546

241320

,所以



33117221

7165

251122

1

1

B

detB

B21B

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

i4

=(z

i

+z

i1

+z

i2

+z

i4

)mod2可知z

k

=0(k=0,)

此时周期为1;

若(z

0

,z

1

,z

2

,z

3

)=(0,0,0,1),则由z

i4

=(z

i

+z

i1

+z

i2

+z

i4

)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

i4

=(z

i

+z

i1

+z

i2

+z

i4

)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

i4

=(z

i

+z

i1

+z

i2

+z

i4

)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

mi

(z

mi

,z

mi1

,...,z

mim1

)

z

mi

c

j

z

ij

mod2

j0

m1

m1

j0

m1

j0

v

mi

(

c

j

z

ij

mod2,

c

j

z

i1j

mod2,...,

c

j

z

mi1j

)

j0

m1

v

mi

(b)

cv

j0

m1

jij

mod2

0

v

1



1

v

2

...

h1

v

h

0

(h≤m+1)

v

h

j

v

j1

mod2

j0

h2

(c)

v

h

(z

h

,z

h1

,...,z

hm1

)

i≥1所以h-1+i≥h

当i≤m时h-1+i≤h+m-1

v

h

j0

h2

j0

h2

j

v

j1

mod2

z

h1i

j

z

ji

mod2

当i>m时由

z

i

z

im

亦可得

z

h1i

h2

j0

j0

h2

j

z

ji

mod2

z

h1i

j

z

ji

mod2

(d)

若h≤m则h-1

z

h1i

j

z

ji

mod2

z

mi

c

j

z

ij

mod2

矛盾

j0j0

h2m1

故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 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|