软考中级

阅读下列说明,回答问题 1 至问题 5,将解答写在答题纸的对应栏内。 【说明】 DES 是一种分组密码,己知 DES 加密算法的某个 S 盒如表 4-1 所示。 表4-1 S盒 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 7 13 14 3 0 6 9 (1) 1 2 8 5 11 12 4 15 1 13 8 11 5 (2) 15 0 3 4 7 2 12 1 10 14 9 2 10 6 9 0 12 11 7 13 15 (3) 3 14 5 2 8 4 3 3

题目

阅读下列说明,回答问题 1 至问题 5,将解答写在答题纸的对应栏内。 【说明】 DES 是一种分组密码,己知 DES 加密算法的某个 S 盒如表 4-1 所示。 表4-1 S盒 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 7 13 14 3 0 6 9 (1) 1 2 8 5 11 12 4 15 1 13 8 11 5 (2) 15 0 3 4 7 2 12 1 10 14 9 2 10 6 9 0 12 11 7 13 15 (3) 3 14 5 2 8 4 3 3 15 0 6 10 1 13 8 9 4 5 (4) 12 7 2 14

【问题1】 (4分) 请补全该 S 盒,填补其中的空(1) - (4),将解答写在答题纸的对应栏内。 【问题 2】 (2分) 如果该 S 盒的输入为 110011,请计算其二进制输出。 【问题3】(6分) DES加密的初始置换表如下: 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 置换时,从左上角的第一个元素开始,表示输入的铭文的第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题:

有以下程序

struct S{ int n; int a[20]; }; void f(int *a,int n) {int i; for(i=0;i a[i]+=i; } main() {int i; struct S s={10,{2,3,1,6,8,7,5,4,10,9}}; f(s.a, s.n); for(i=0;i printf(“%d”,s.a[i]); } 程序运行后的输出结果是( )。

A.2,4,3,9,12,12,11,11,18,9,

B.3,4,2,7,9,8,6,5,11,10,

C.2,3,1,6,8,7,5,4,10,9,

D.1,2,3,6,8,7,5,4,10,9,


正确答案:A

第2题:

(1)0×(-2012);                                    (2)(-8)×1.25 ;

(3)7/10×(-3/14)

(4)(-3/16)×(-8/9)

(5)7.5×(-8.2)×0×(-19.1)

(6)(-14/3)×5/7

(7)(-0.12)×1/12×(-100)

(8)7×(-1+3/14)


(1)0           (2)-10               (3) -3/20         (4)1/6

(5) 0          (6)-10/3             (7) 1       (8)-11/2

第3题:

有以下程序

struct S{ int n; int a[20]; };

void f(int *a,int n)

{ int i;

for(i=0;i<n-1;i++) a[i]+=i;

}

main( )

{ int i; struct S s={10,{2,3,1,6,8,7,5,4,10,9}};

f(s.a,s.n);

for(i=0;i<s.n;i++) printf("%d",s.a[i]);

}

程序运行后的输出结果是

A)2,4,3,9,12,12,11,11,18,9,

B)3,4,2,7,9,8,6,5,11,10,

C)2,3,1,6,8,7,5,4,10,9,

D)1,2,3,6,8,7,5,4,10,9,


正确答案:A

第4题:

有以下程序:include main( ){int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13;1

有以下程序: #include <stdio.h> main( ) { int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13;14,15,16}},i,j; for(i =0;i<4;i ++ ) { for(j=0;j<=i;j++)printf("%4c","); for(j=______;j<4;j ++ )printf( "%4d" ,hum[i] [j] ); printf(" \n" ); } } 若要按以下形式输出数组右上半三角; 1 2 3 4 6 7 8 11 12 16则在程序下划线处应填入的是( )。

A.i-1

B.i

C.i+1

D.4-i


正确答案:B
解析:本程序为二重循环,外循环控制输出数据的行数,内循环控制输出数据的列数。本题需要输出4行4列,外层循环语句for(i=0;i4;i++)控制输出4行,内层的第一条for循环控制每行输出的空格数,第二条for循环用于控制每行的数字输出,由于每一行的数字个数比前一行少1个,所以内层的第二条for循环每次循环的次数需要递减1,那么j的初始值应该递增,因为第一行输出的是4个数,所以空格中应填i。

第5题:

有以下程序 struct S { int n;int a[20];}; void f(int *a,int n) { int i; for(i=0;i<n-1;i++)a[i]+=i; } main() { int i;struct S s={10,{2,3,1,6,8,7,5,4,10,9}}; f(s.a,s.n); for(i=0;i<s.n;i++)printf("%d,",s.a[i]); } 程序运行后的输出结果是

A.2,4,3,9,12,12,11,11,18,9,

B.3,4,2,7,9,8,6,5,11,10,

C.2,3,1,6,8,7,5,4,10,9,

D.1,2,3,6,8,7,5,4,10,9,


正确答案:A
解析:本题中,在调用函数时将结构体变量的两个成员作为实参,其中的成员数组a实际向函数f()传递的是该数组的地址,因此在函数f()中所对应的形参发生改变时,该数组内的数据也会发生改变。函数f()实现的功能是将成员数组中的前9个元素分别加上该元素的下标,作为新的元素。

第6题:

有以下程序: struct S{int n;int a[20];}; void f(int*a,int n) {int i; for(i=0;i<n-1;i++)a[i]+=i;} mainf() {int i;struct S s{10,{2,3,1,6,8,7,5,4,10,9}}; if(s.a,s.n); for(i=0;i<s.n;i++)printf("%d",s.a[i]);} 程序运行后的输出结果是( )。

A.2,4,3,9,12,12,11,11,18,9

B.3,4,2,7,9,8,6,5,11,10

C.2,3,1,6,8,7,5,4,10,9

D.1,2,3,6,8,7,5,4,10,9


正确答案:A

第7题:

计算:

(1)(-8)-(-1)                                        (2)45+(-30)                          

(3)-1.5-(-11.5)                                    (4)-1/4-(-1/2)                            

(5)15-[1-(-20-4)]                                                                    (6)-40-28-(-19)+(-24)                        

(7)22.54+(-4.4)+(-12.54)+4.4       

(8) (2/3-1/2)-(1/3-5/6)                         

(9)2.4-(-3/5)+(-3.1)+4/5                                                               (10)(-6/13)+(-7/13)-(-2)

(11)3/4-(-11/6)+(-7/3)

(12)11+(-22)-3×(-11)

(13)(-0.1)÷1/2×(-100)

(14)(-3/4)×(-2/3 - 1/3) ×0

(15)(-2)3-32

(16)23÷[(-2)3-(-4)]

(17)(3/4-7/8)÷(-7/8)

(18)(-60)×(3/4+5/6)


(1)(-8)-(-1)=-7                                      

(2)45+(-30)=15                          

(3)-1.5-(-11.5)=10                                    

(4)-1/4-(-1/2)=1/4                            

(5)15-[1-(-20-4)]=-10                                                                     (6)-40-28-(-19)+(-24)=-73                        

(7)22.54+(-4.4)+(-12.54)+4.4=10       

(8) (2/3-1/2)-(1/3-5/6)=-1                         

(9)2.4-(-3/5)+(-3.1)+4/5=0.7                                                                (10)(-6/13)+(-7/13)-(-2)=1

(11)3/4-(-11/6)+(-7/3)=1/4

(12)11+(-22)-3×(-11)=22

(13)(-0.1) ÷1/2×(-100)=20

(14)(-3/4) ×(-2/3 - 1/3) ×0=0

(15)(-2)3-32=-17

(16)23÷[(-2)3-(-4)]=-23/4

(17)(3/4-7/8) ÷(-7/8)=1/7

(18)(-60) ×(3/4+5/6)=-95

第8题:

在○中填入“<”“>”“=”。

4/5-2/5○9/10-7/10   5/8-3/8○3/4-1/4

3/12+5/12○1/6+3/6    3/7+4/7○4/11+7/11


4/5-2/5>9/10-7/10    5/8-3/8<3/4-1/4

3/12+5/12=1/6+3/6     3/7+4/7=4/11+7/11


第9题:

下面程序的输出结果是 ( ) main( ) { int i,f1,f2; f1=f2=1; for(i=0;i<4;i+ +) { printf(”%d%d”,f1,f2); f1+ =f2; f2+ =f1; } }

A.1 2 3 4 5 6 7 8

B.1 1 2 3 5 8 13 21

C.1 1 3 5 7 9 11 13

D.1 3 5 7 9 11 13 15


正确答案:B

第10题:

当执行下面的语句定义一维数组a后,此数组的所有元素为 ( ) inta[10];

A.a[1],a[2],a[3],a[4],a[5],a[6],a[8],a[9],a[10],a[10]

B.a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]

C.a[0],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10]

D.a[1],a[2],a [3],a[4],a [5],a [9],a [7],a [8],a [9],a [10],a [11]


正确答案:B

更多相关问题