第4题
【说明】
DES 是一种分组密码,己知 DES 加密算法的某个 S 盒如表 4-1 所示。
【问题1】 (4分)
请补全该 S 盒,填补其中的空(1) – (4),将解答写在答题纸的对应栏内。
【问题 2】 (2分)
如果该 S 盒的输入为 110011,请计算其二进制输出。
【问题3】(6分)
DES加密的初始置换表如下:
置换时,从左上角的第一个元素开始,表示输入的铭文的第58位置换成输出的第1位,输入明文的第50位置换成输出的第2位,从左至右,从上往下,依次类推。
DES加密时,对输入的64位明文首先进行初始置换操作。
若置换输入的明文M=0123456789ABCDEF(16进制),请计算其输出(16进制表示)。
【问题4】(2分)
如果有简化的DES版本,其明文输入为8比特,初始置换表IP如下:
IP:2 6 3 1 4 8 5 7
请给出其逆初始置换表。
【问题5】(2分)
DES加密算法存在一些弱点和不足,主要有密钥太短和存在弱密钥。请问,弱密钥的定义是什么?
【答案和解析】:
【问题 1】
答案: (1)10 (2)6 (3)1 (4)11
解析:每一行的元素都是固定是:0 - 15 , 只是顺序不同。
【问题2】
答案:0100
解析: 根据软考指定教材《信息安全工程师教程》的第九十,九十一页: S盒6位输入中第一位和第六位数字组成二进制数值代表选中的行号, 其余四位数字所组成列号:
110011 : 行号: (第一位,第6位):11 是第三行
列号:(其余四位): 1001 : 第九列
结果: 查表可得: 结果为4 , 即0100;
【问题3】
M = (0123456789ABCDEF)16 = (00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2经过IP置换,结果为:M’ =(11001100 00000000 11001100 11111111 11110000 10101010 11110000 10101010)2=(CC00CCFFF0AAF0AA)16
解析:参考于https://www.cnblogs.com/songwenlong/p/5944139.html 中:
表中的数字代表原数据中此位置的数据在新数据中的位置,即原数据块的第1位放到新数据的第58位,第2位放到第50位,……依此类推,第64位放到第7位。置换后的数据分为L0和R0两部分,L0为新数据的左32位,R0为新数据的右32位。
设转换前的数据位D1D2D3…D64,则IP置换后的结果为L0=D58D50…D8,R0=D57D49…D7。0x0000 0080 0000 0002转换后的结果为0x0002 0000 0000 0001,且L0=0x0002 0000,R0=0x0000 0001。置换步骤如下:
原数据第33位为1,置换表第33位为64,因此将1放到新数据的第64位;原数据第63位为1,置换表第63位为7,因此将1放到新数据的第7位;其余值为0的位按此置换。要注意一点,位数是从左边开始数的,即最0x0000 0080 0000 0002最左边的位为1,最右边的位为64。
M = (0123456789ABCDEF)16 = (00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2 , 将二进制数 顺序填入 初始置换表 :
58 (0) | 50 (0) | 42 (0) | 34 (0) | 26 (0) | 18 (0) | 10 (0) | 2 (1) |
60 (0) | 52 (0) | 44 (1) | 36 (0) | 28 (0) | 20 (0) | 12 (1) | 4 (1) |
62 (0) | 54 (1) | 46 (0) | 38 (0) | 30 (0) | 22 (1) | 14 (0) | 6 (1) |
64 (0) | 56 (1) | 48 (1) | 40 (0) | 32 (0) | 24 (1) | 16 (1) | 8 (1) |
57 (1) | 49 (0) | 41 (0) | 33 (0) | 25 (1) | 17 (0) | 9 (0) | 1 (1) |
59 (1) | 51 (0) | 43 (1) | 35 (0) | 27 (1) | 19 (0) | 11 (1) | 3 (1) |
61 (1) | 53 (1) | 45 (0) | 37 (0) | 29 (1) | 21 (1) | 13 (0) | 5 (1) |
63 (1) | 55 (1) | 47 (1) | 39 (0) | 31 (1) | 23 (1) | 15 (1) | 7 (1) |
(考试时,在试题上直接填写)
将根据 序号1-64 对于括号内的0,1代码顺序写下来(例如:1 在第四行第八列对应的括号里的数是:1 ):
M’ =(11001100 00000000 11001100 11111111 11110000 10101010 11110000 10101010)2
最后换算成:16进制:
=(CC00CCFFF0AAF0AA)16
【问题4】
4 1 3 5 7 2 8 6
解析:
初始置换表中的数字代表原数据中此位置的数据在新数据中的位置,即原数据块的第1位放到新数据的第58位,第2位放到第50位,……依此类推,第64位放到第7位。置换后的数据分为L0和R0两部分,L0为新数据的左32位,R0为新数据的右32位。
根据这个规律: 原数据中 第1个位置是2 , 那么新数据中 第2个位置就为 1; 原数据中 第2个位置是6 , 那么新数据中 第6个位置就为 2; 以此类推...
答案就是:
4 1 3 5 7 2 8 6
【问题5】
弱密钥不受任何循环移位的影响,并且只能得到相同的子密钥,由全0或全1组成的密钥显然是弱密钥,子密钥生成过程中被分割的两部分分别为全0或全1时也是弱密钥。