第3章 分组密码
习题及参考答案
1. 设DES 算法中,明文M 和密钥K 分别为:
M =0011 1000 1100 0100 1011 1000 0100 0011 1101 0101 0010 0011 1001 1110 0101 1110
K =1010 1001 0011 0101 1010 1100 1001 1011 1001 1101 0011 1110 1101 0101 1100 0011
求L 1和R 2。
解:
初始变换IP :
1001 1010 1101 0101 1101 0010 0011 1000 0101 0110 0010 0101 1100 0101 1110 1000
则,0L =1001 1010 1101 0101 1101 0010 0011 1000
0R =0101 0110 0010 0101 1100 0101 1110 1000
K 去校验位得:
0C =1101 0111 1100 0000 0010 0111 0111
0D =1010 1000 0111 0110 0011 0101 0010
循环左移一位:1C =1010 1111 1000 0000 0100 1110 1111
1D =0101 0000 1110 1100 0110 1010 0101
经过置换选择得到:1K =0000 1111 0110 1000 1101 1000 1001 1010 1000 0111 0011 0001
同样可以得到:2K =0101 0101 0110 0001 1101 1101 1011 0101 0101 0000 0110 1110
1L =0R =0101 0110 0010 0101 1100 0101 1110 1000
经过轮函数F 后,0R 经过扩展置换E 后为:0010 1111 1100 0001 0000 1011 1110 0000 1011 1111 0000 0000
和1K 异或后经S 盒替换:0100 1100 0011 1000 0100 1100 0000 1010
经过P 盒置换后输出:0001 1100 0000 1110 1000 0000 0101 1100
和0L 异或得1R :1000 0110 1101 1011 0101 0010 0110 0100
1R 经过扩展置换E 得48位输出:1000 1010 0100 0010 0000 1000 0010 0101 1101 0100 1010
1010
同上过程可得2R :1101 0100 1100 0111 0000 1101 0001 0110
即:1L =0101 0110 0010 0101 1100 0101 1110 1000
2R =1101 0100 1100 0111 0000 1101 0001 0110
2. 设DES 算法中S 4盒的输入为010101,求其输出。
解:
01→1,1010→10. 在4S 盒中,(1,5)→2,即输出0010.
3.
在图3.18所示的IDEA 算法MA 部件中,已知输入数据为
X 1= 0000100110010011, X 2= 1010001001001011,
K 1= 1100001000100110, K 2= 1000011010000110,
求输出求Y1和Y2。
1X ⊙1K =1100 1010 1001 0000
1X ⊙1K [+]2X =0110 1100 1101 1011
2Y =【1X ⊙1K [+]2X 】⊙2K =0110 0011 0110 1111
1Y =1X ⊙1K [+]2Y =0010 1101 1111 1111
4. 在IDEA 算法中,已知明文M 和密钥K 分别为:
M =10101010 11100110 01010101 00001111 11001100 00110011 10011001 01100110
K = 00000000 11111111 00000000 11111111 11111111 00001111 11110000 11111111
00001111 11110000 11111111 00000000 00001111 11111111 11110000 00001111
求第一轮的输出和第二轮的输入。
解:第一轮的输出和第二轮的输入是相同的。
根据IDEA 迭代结构图:这里⊗代表⊙,
111K M r ⊗==0011 1010 0111 0000
222][K M r +==0101 0110 0000 1110
333][K M r +==1100 1011 0100 0010
444K M r ⊗==1101 1100 0011 0011
315r r r ⊕==1111 0001 0011 0010
426r r r ⊕==1000 1010 0011 1101
577K r r ⊗==1111 1101 1101 1101
678][r r r +==1000 1000 0001 1010
689K r r ⊗== 0101 1110 0110 1111
9710][r r r +==0101 1100 0100 1100
9111r r r ⊕==0110 0100 0001 1111
12212r r r ⊕== 0000 1010 0100 0010
3913r r r ⊕==1001 0101 0010 1101
10414r r r ⊕==1000 0000 0111 1111
111r Y ==0110 0100 0001 1111
132r Y ==1001 0101 0010 1101
123r Y ==0000 1010 0100 0010
144r Y ==1000 0000 0111 1111
5.计算GF(28)上多项式乘法
(1) ‘57’⋅‘9D’
(2) ‘66’⋅‘D5’
(3) ‘8C’ ⋅‘B5’
(4) ‘F4’ ⋅‘3C’
解:(1)‘57’ ⋅‘02’=’AE’
‘57’ ⋅‘04’=’47’
‘57’ ⋅‘08’=’8E’
‘57’ ⋅‘10’=’07’
‘57’ ⋅‘20’=’0E’
‘57’ ⋅‘40’=’1C’
‘57’ ⋅‘80’=’38’
因此,‘57’ ⋅‘9D’=’57’⋅[‘80’+’10’+’08’+’04’+’01’]=’38’+’07’+’8E’+’47’ +’57’
=’A1’
(2)同上,‘66’ ⋅‘D5’=’FC’
(3) ‘8C’⋅‘B5’=’62’
(4) ‘F4’ ⋅‘3C’=’6C’
6.设AES算法分组长度为128,输入的明文M和密钥K分别为
M=32 6C A8 F6 42 31 8C D6 43 72 64 E0 98 89 07 C3
K=A3 61 89 B5 54 12 D8 90 F4 14 FC AB 81 70 AE 3F
求AES的第一轮输出。
N个字是由密码密钥填充的,即初始轮密钥为K。
解:考虑到扩展密钥的前
k
明文与初始轮密钥加得:91 0D 21 43 16 23 54 46 B7 66 98 4B 19 F9 A9 FC
经过字节代换为:D0 B1 F4 8A 21 EB 4F AA 0E F6 3B F7 BD 84 C5 DF
行移位得:D0 B1 F4 8A EB 4F AA 21 3B F7 0E F6 DF BD 84 C5
列混合变换得:79 E2 9C 43 8F D0 2D 0C 17 D7 D5 08 1E 18 B0 C1
加密钥:A3 54 F4 81 61 12 14 70 89 D8 FC AE B5 90 AB 3F
即得第一轮输出:DA B6 68 C2 EE C2 39 7C 9E 0F 29 A6 AB 88 1B FE。