阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。
【说明】
本程序对某电码文(原文)进行加密形成密码文,其加密算法如下:
假定原文为C1,C2,C3,…,Cn加密后形成的密文为S1,S2,S3,…,Sn,首先读入正整数 key(key>1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如下图所示:
加密时从S1位置起顺时针计数,当数到第key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第key个字符位置时,将原文中字符C2放入其中,并从环中除去该字符位置:依次类推,直至n个原文字符全部放入密文环中。由此产生的 S1S2…Sn即为原文的密文。
例如,当Key=3时,原文this is a decoding system的密文为:
aotgnhedi ys d imietsnc ss
当Key=4时,该原文的密文为:
ssdtyd htegiasiscnm e ion
本程序将电码的原文存放在字符数组old中,加密钥匙存放在整数key中。函数decode用于将原文old加密并返回密文字符数组的首指针。其中函数采用一个双向循环链表CODE来表示密文环:函数strlen用于计算一个字符串中的字符个数(不包括字符串结尾符'\O')。为了简单起见,程序中假设内存容量足以满足动态存储单元分配的要求。
include <stdio.h>
include <stdlib.h>
typedef struct node
{ char ch;
struct node *forward;/* Link to next node. */
struct node *backward;/* Link to previous node.*/
} CODE;
int strlen(char *s)
{ int len=0;
while (*s++!='\0')
len++;
return(len);
}
char *decode(char *otd,int key)
{ char *New; int length,count,i;
CODE *loop,*p;
length=strlen(old);
loop=(CODE *) malloc(length*sizeof(CODE));
for (i=1;i<length-1;i++)
{ loop[i],forward=&loop[i+1];
(1)
}
loop[0].backward=&loop[length-1];
loop[0],forward=&loop[1];
loop[length-1].forward=loop;
(2)
for (p=loop,i=0;i<length;i++)
{ for (count=1 ;count<key;count++
p=p->forward;
(3)
p->backward->forward=p->forward;
p->forward->backward=p->backward;
(4)
}
New=(char *)malloc((length+1) *sizeef(char));
for (i=0;i<length;i++)
(5)
New[length]='\0';
return (New);
}
void main()
{ char old[256];
int key, num=0;
printf("\nPlease input the telegraph: \n");
while (num<255 && (old[num++]=getchar())!='\n');
old [(num==255)?num:num-1]='\0';
do
{ printf("\nPlease input Key (Key>1):");
scanf("%d",&key);
} while (key<=1);
printf( "\nThe decode of telegraph:'%s'is:\n'%s'\n",old,decode(old,key));
}
第1题:
利用凯撒加密算法对字符串attack进行加密,如果密钥为1,那么生成的密文为
A.DWWDFN
B.EXXEGO
C.BUUBDL
D.DXXDEM
第2题:
利用凯撒加密算法对字符串“attack”进行加密。如果密钥为3,那么生成的密文为_______。
A.DWWDFN
B.EXXEGO
C.CVVCEM
D.DXXDEM
第3题:
密码算法可以用C=F(M,Key)这一公式表示,其中C表示的是()。
第4题:
What is a characteristic of using the Electronic Code Book mode of DES encryption?以下哪一项特征是使用DES中电子密码本?()
第5题:
以下有关密码技术的说法中错误的是。()。
第6题:
密码算法可以用C=F(M,Key)这一公式表示,其中M表示的是()。
第7题:
函数String(n,"str")的功能是()。
第8题:
代换密码是把明文中的各字符的()得到密文的一种密码体制。
第9题:
欲加密的字符
加密后的字符
密码钥匙
加密算法
第10题:
M=F(C,Key)
C=F(M,Key)
Key=F(C,M)
F=(C,M,Key)
第11题:
由明文到密文的过程称为加密
合法接受者从密文恢复出明文的过程称为解密
对明文进行加密时采取的规则称为加密算法
密码是不可破解的
第12题:
Repetitive encryption obscures any repeated patterns that may have been present in the plaintext.反复加密以掩盖任何可能在明文出现的重复模式
The previous DES output is used as input.之前的DES加密输出被用来作为输入
Individual characters are encoded by combining output from earlier encryption routines with plaintext.单个字符从之前明文加密程序的结合输出来进行编码
A given block of plaintext and a given key will always produce the same ciphertext.一个给定的明文和一个给定的密钥将总是产生相同的密文。
第13题:
A.密码算法
B.密钥
C.明文
D.密文
第14题:
【题目描述】
第 10 题为确保信息安全,信息需加密传输,发送方由明文→密文(加密),接收方由密文→明文(解密),已知有一种密码,将英文26个小写字母a,b,c,…,z依次对应0,1,2,…,25这26个自然数(见表格),当明文中的字母对应的序号为β时,将β+10除以26后所得的余数作为密文中的字母对应的序号,例如明文s对应密文c。
按上述规定,将明文“maths”译成密文后是( )。
A.wkdrc
B.wkhtc
C.eqdjc
D.eqhjc
正确答案:A |
答案分析:
m对应的数字是12,12+10=22,除以26的余数仍然是22,因此对应的字母是w;a对应的数字是0,0+10=10,除以26的余数仍然是10,因此对应的字母是k;t对应的数字是19,19+10=29,除以26的余数仍然是3,因此对应的字母是d;…,所以本题译成密文后是wkdrc。
第15题:
常见密码系统包含的元素是()。
第16题:
加密算法是一种数学函数,如果用C表示加密后的密文,M是欲加密的明文,Key表示密钥,F表示加密算法,以下正确表示加密算法原理的数学式是()。
第17题:
密码算法可以用C=F(M,Key)公式表示,其中M表示的是()。
第18题:
charAt(int index)表示从字符串中取得一个字符,该字符的位置是index
第19题:
置换密码是把()中的各字符的位置次序重新排列得到密文的一种密码体制。
第20题:
密码钥匙
欲加密的字符
加密后的字符
加密算法
第21题:
位置次序重新排列
替换为其他字符
增加其他字符
减少其他字符
第22题:
明文
密文
明文空间
密文空间
第23题:
DWWDFN
EXXEGO
CVVCEM
DXXDEM