《信息安全原理与技术》(第2版)习题答案

}

} if(b[2]==0) { cout<<\和d的最大公因子是\没有逆元!\ } else if(b[2]==1) { cout<<\和d的最大公因子是\是d的逆元!\ } }

return 0;

第3章

3.1 下式是仿射密码的加密变换

c= (3m+5) mod 26,试求: (1) 该密码的密钥空间是多少

(2) 求出消息“hello”对应的密文 (3) 写出它的解密变换 (4) 试对密文进行解密 解:

(1)密钥空间为n??n?=312。

(2)hello五个字母对应的数字分别是7,4,11,11,14 分别加密如下: (3*7+5)mod26=0 (3*4+5)mod26=17

(3*11+5)mod26=12 (3*11+5)mod26=12 (3*14+5)mod26=21

五个密文数字为0,17,12,12,21,对应密文是ARMMV。 (3)解密变换为m=

1(c-5)mod26 3(4)密文ARMMV五个字母对应数字分别为0,17,12,12,21 分别利用解密变换解密,解密后对应数字为7,4,11,11,14 所以得到明文为hello。

3.2用Playfair密码加密下面消息:

ciphers using substitutions or transpositions are not secure because of language characteristics. 密钥为the playfair cipher was invented by Charles Wheatstone。 解:

由密钥可构建如下的密钥矩阵。 T A

H Y E F P I/J L R 9

C D M W S B Q O U N G X V K Z 将明文按照两个字母分组为:

ci ph er su si ng su bs ti tu ti on so rt ra ns po si ti on sa re no ts ec ur eb ec au se of la ng ua ge ch ar ac te ri st ic sx

则密文为:NA LE LF OE NF GX OE OW PA EM PA GS OU AL AY VN EG NF PA GS CF FL SG EC TS ZF HO TS FM OF US TR GX MF OP WT YA CD HP AR CE AN NU

3.3 假设密钥为“encryption”,用维吉尼亚密码加密消息symmetric schemes require both parties to share a common secret key。 解:

在明文下面重复写密钥字,组成密钥。

明文M:symmetricschemesrequirebothpartiestoshareacommonsecretkey 密钥K:encryptionencryptionencryptionencryptionencryptionencrypt 将明文和密钥转化为数字

明文=(18,24,12,12,4,19,17,8,2,18,2,7,4,12,4,18,17,4,16,20,8,17,4,1,14,19,7,15,0,17,19,8,4,18,19,8,4,18,19,14,18,7,0,17,4,0,2,14,12,12,14,13,18,4,2,17,4,19,10,4,24)

密钥=(4,13,2,17,24,15,19,8,14,13,4,13,2,17,24,15,19,8,14,13,4,13,2,17,24,15,19,8,14,13,4,13,2,17,24,15,19,8,14,13,4, 13,2,17,24,15,19,8,14,13,4,13,2,17,24,15,19)

对每个明文数字和对应的密钥数字,使用Ci?(mi?ki)mod26加密,得到密文数字为 C=(22,11,14,3,2,8,10,16,16,21,6,21,6,3,2,7,10,12,4,7,12,4,6,18,12,8,0,23,14,4,23,21,6,9,17,3,11,15,14,4,8,13,4,5,10,1,7,21,6,17,6,4,6,10,8,19,17) 于是密文为

WLODCIKQQVGVGDCHKMEHMEGSMIAXOEXQGJRDLPOEINEFKBHVGRGEGKITR

3.4 Hill密码不能抵抗已知明文攻击,如果有足够多的明文和密文对,就能破解Hill密码。 (1) 攻击者至少有多少个不同明文-密文对才能攻破该密码? (2) 描述这种攻击方案。 解:

(1)破解一个Hillm密码至少应该有m个不同的明文-密文对。

(2)攻击方案为:假定攻击者已经确定了正在使用的m值,至少有m个不同的明-密文对

设为:?j?(?1,j,?2,j,??m,j) yj?(y1,j,y2,j,?ym,j)

对任意的1?j?m,有yj?ek(?j)。如果定义两个m?m矩阵X????和Y?(yi,ji,j ),

则有矩阵方程Y=XK,其中m?m矩阵K是未知密钥。假如矩阵X是可逆的,则攻击者 可以算出K?XY,从而可以破译Hill密码(如果X不可逆,则必须重新选择m个明

10

?1-密文对)。

3.5用Hill密码加密消息”hill”,密钥为:

?11 8?k???3 7?? ??并写出从密文恢复明文的解密过程。

解: 经计算

?718? K?1????2311?设明文为Hill,则相应的明文向量为(7,8)和(11,11)。于是,相应的密文向量分别为

?118?(7,8)??37???(77?24,56?56)?(23,8)??

?118?(11,11)??37???(121?33,88?77)?(24,9)??因此,明文Hill的密文为XIYJ。

3.6用一次一密加密消息“01011010101100111100010101010101011011110001010001”,选定的密钥是“10010101011110101101000101000001111100100101010010”,试写出密文。 解:密文=明文?密钥

=01011010101100111100010101010101011011110001010001? 10010101011110101101000101000001111100100101010010 =11001111110010010001010000010100100111010100000011

3.7使用DES加密,假设明文和密钥都为 (0123456789ABCDEF)16 = (00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2

(1) 推导出第一轮的子密钥K1 (2) 写出R0和L0

(3) 扩展R0并计算E(R0)⊕K1

(4) 将第(3)问的结果,输入到8个S盒,求出加密函数F (5) 推导出R1和L1 解:

(1)将密钥K经置换选择1,得 C0=11110000 11001100 10101010 0000 D0=10101010 11001100 11110000 0000 左移1位后经置换选择2输出48为K1。

K1=00001010 00000010 01110111 10011011 01001000 10100101 (2)初始置换后,得到

11

L0=11001100 00000000 11001100 11111111 R0=11110000 10101010 11110000 10101010

(3)用扩展置换E将R0扩展为48位后,与K1异或

E(R0)?K1=01110000 00010111 00100010 11100001 01011101 11110000 (4)经过8个S盒输出32位

S1(011100)=0000 S2(000001)=0000 S3(011100)=0010 S4(100010)=1000 S5(111000)=0011 S6(010101)=1101 S7(110111)=1000 S8(110000)=1100 经置换函数P,输出加密函数如下: F=00111000 00000000 00100000 11101101 (5)由L0和R0计算出L1和R1

L1=R0=11110000 10101010 11110000 10101010 R1=L0?F=11001000 10101010 11010000 01000111

3.8在GF(28)上{01}的逆是什么?并验证其在S盒中的输入。 解:

在GF(28)上{01}的逆是{01},用二进制标识为0000 0001,代入S盒的变换,如下:

??1??1????1??1????1??0??0????0??011111000011111000011111100011111100011111100011??1??1????1????1????1????0????????????????????????1??0????1????1????1????0??????1??0????0????1????0????1????????????????????????1??0????0101???????????????????? ??0??0????0????1????0????1????????????????????????001011??????????????????????0??0????1????0????1????1??????????????1??0??0??0??0??0???????????????????????? 结果为01111100,用十六进制表示为{2A},与查S盒所得到结果一致。

3.9假设 AES的State矩阵的某一列分别是s0 = {87},s1= {6E},s2 = {46},s3 = {A6}。经过列混淆变换后,s1 = {6E }映射为s’1 = {37},试计算验证这一结果。 解:

第一列第2个字节的代换方程为

{87}?({02}?{6E})?({03}?{46})?{A6}={37} 下面验证上面等式成立。用多项式表示为 {02}??,

{6E}??6??5??3??2??

12

联系客服:779662525#qq.com(#替换为@)