您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 东北大学信息安全作业
计算机120X班2012XXXXXXX作业(一)(1).编程实现双轨加密#includeiostream#includestringusingnamespacestd;charch1[30];charch2[30];inti;stringshuanggui(char*ch){intj=0,k=0;i=0;stringstr1=;stringstr2=;while(ch[j]!='\0'){if(ch[j]=='');else{ch2[i]=ch[j];i++;}j++;}while(ki){str1+=ch2[k];k++;str2+=ch2[k];k++;}returnstr1+str2;}intmain(){cout请输入明文:;gets(ch1);cout双轨加密后:shuanggui(ch1)endl;return0;}从键盘读入明文ch1开始去除空格ch2加到str2中加到str1中输出str1+str2结束偶数位字符是否计算机120X班2012XXXXXXX(2).编程实现钥控算法#includeiostream#includestringusingnamespacestd;intN;intM;intlen(char*ch){//计算密钥长度、明文长度inti=0;while(ch[i]!='\0')i++;returni;}//快速排序voidQsort(char*ch,intlow,inthigh){if(low=high){return;}intfirst=low;intlast=high;charkey=ch[first];//用字表的第一个记录作为枢轴while(firstlast){while(firstlast&&ch[last]=key){--last;}ch[first]=ch[last];//将比第一个小的移到低端while(firstlast&&ch[first]=key){++first;}ch[last]=ch[first];//将比第一个大的移到高端}ch[first]=key;//枢轴记录到位Qsort(ch,low,first-1);Qsort(ch,first+1,high);开始读入明文c1,密钥c2计算明文、密钥的实际长度M、N生成二维字符数组对密钥数组进行一次快速排序ch2n=n+1输出密文矩阵c2[n]=ch2[m]nN结束m=m+1nN计算机120X班2012XXXXXXX}voidyuekong(char*ch0,char*ch2){inti=0,k=0,j=0;charch3[10][10];charch4[10],ch1[100];while(ch0[j]!='\0')//除去空格{if(ch0[j]=='');else{ch1[i]=ch0[j];i++;}j++;}ch1[i+1]='\0';i=0;j=0;while(ch1[i]!='\0')//生成二维字符数组{ch3[i/N][i%N]=ch1[i];i++;}for(intl=0;l=N;l++){ch4[l]=ch2[l];}Qsort(ch2,0,N-1);cout钥控加密后:endl;for(intm=0;m=N;m++){for(intn=0;nN;n++){if(ch4[n]==ch2[m]){if(i%N==0)for(intj=0;ji/N;j++)coutch3[j][n];elsefor(intj=0;j(i/N+1);j++){if((ch3[j][n]='a'&&ch3[j][n]='z')||(ch3[j][n]='A'&&ch3[j][n]='Z'))coutch3[j][n];else;}coutendl;}else;计算机120X班2012XXXXXXX}}}voidmain(){charc1[100];//明文charc2[20];//密钥cout请输入明文:;gets(c1);cout请输入密钥:;gets(c2);N=len(c2);M=len(c1);yuekong(c1,c2);}作业(二)(1)编程实现求乘法逆元;#includestdio.hintExtendedEuclid(intf,intd,int*result){intx1,x2,x3,y1,y2,y3,t1,t2,t3,q;x1=y2=1;x2=y1=0;x3=(f=d)?f:d;y3=(f=d)?d:f;while(1){if(y3==0){*result=x3;//两个数不互素则result为两个数的最大公约数,此时返回值为零return0;}if(y3==1){*result=y2;//两个数互素则resutl为其乘法逆元,此时返回值为1return1;}q=x3/y3;t1=x1-q*y1;t2=x2-q*y2;t3=x3-q*y3;x1=y1;x2=y2;x3=y3;y1=t1;y2=t2;y3=t3;}计算机120X班2012XXXXXXX}intmain(){intx,y,z,max,min;z=0;printf(请输入两个数:\n);scanf(%d%d,&x,&y);max=xy?x:y;min=xy?x:y;if(ExtendedEuclid(min,max,&z)){if(z0)printf(%d和%d互素,乘法的逆元是:%d\n,x,y,z);elseprintf(%d和%d互素,乘法逆元是:%d\n,x,y,z+max);}elseprintf(%d和%d不互素,最大公约数为:%d\n,x,y,z);return0;}(2)编程实现换位密码;#includeiostream#includestringusingnamespacestd;charch[30];charch1[30];intx;intlen(char*ch){inti=0,j=0;charc1[20];while(ch[i]!='\0'){if(ch[i]!=''){c1[j]=ch[i];j++;}else;i++;}returnj;}voidLieout(charch[][4])//列换位输出{cout列换位加密后:;for(inti1=0;i15;i1++){计算机120X班2012XXXXXXXif((ch[i1][1]='a'&&ch[i1][1]='z')||(ch[i1][1]='A'&&ch[i1][1]='Z'))coutch[i1][1];else;}for(inti2=0;i25;i2++){if((ch[i2][3]='a'&&ch[i2][3]='z')||(ch[i2][3]='A'&&ch[i2][3]='Z'))coutch[i2][3];else;}for(inti3=0;i35;i3++){if((ch[i3][0]='a'&&ch[i3][0]='z')||(ch[i3][0]='A'&&ch[i3][0]='Z'))coutch[i3][0];else;}for(inti4=0;i45;i4++){if((ch[i4][2]='a'&&ch[i4][2]='z')||(ch[i4][2]='A'&&ch[i4][2]='Z'))coutch[i4][2];else;}coutendl;}voidHangout(charch[][4])//行换位输出{cout行换位加密后:;for(inti0=0;i04;i0++){if((ch[3][i0]='a'&&ch[3][i0]='z')||(ch[3][i0]='A'&&ch[3][i0]='Z'))coutch[3][i0];else;}for(inti1=0;i14;i1++){if((ch[1][i1]='a'&&ch[1][i1]='z')||(ch[1][i1]='A'&&ch[1][i1]='Z'))coutch[1][i1];else;}for(inti2=0;i24;i2++){if((ch[4][i2]='a'&&ch[4][i2]='z')||(ch[4][i2]='A'&&ch[4][i2]='Z'))coutch[4][i2];else;计算机120X班2012XXXXXXX}for(inti3=0;i34;i3++){if((ch[0][i3]='a'&&ch[0][i3]='z')||(ch[0][i3]='A'&&ch[0][i3]='Z'))coutch[0][i3];else;}for(inti4=0;i44;i4++){if((ch[2][i4]='a'&&ch[2][i4]='z')||(ch[2][i4]='A'&&ch[2][i4]='Z'))coutch[2][i4];else;}coutendl;}voidZhouqiout(char*ch)//周期换位输出{charch0[5],ch1[5],ch2[5],ch3[5];inti=0,j0=0,j1=0,j2=0,j3=0;while(ch[i]!='\0'){if(i%4==1){ch0[j0]=ch[i];j0++;}elseif(i%4==3){ch1[j1]=ch[i];j1++;}elseif(i%4==0){ch2[j2]=ch[i];j2++;}elseif(i%4==2){ch3[j3]=ch[i];j3++;}else;i++;}cout周期换位加密后:;for(intk=0;k5;k++){if(ch0[k]='a'&&ch0[k]='z'||ch0[k]='A'&&ch0[k]='Z')coutch0[k];if(ch1[k]='a'&&ch1[k]='z'||ch1[k]='A'&&ch1[k]='Z')coutch1[k];if(ch2[k]='a'&&ch2[k]='z'||ch2[k]='A'&&ch2[k]='Z')coutch2[k];if(ch3[k]='a'&&ch3[k]='z'||ch3[k]='A'&&ch3[k]='Z')coutch3[k];}计算机120X班2012XXXXXXXcoutendl;}voidhuanwei(char*ch,intx)//换位加密{charch2[5][4];inti=0,j=0;while(ch[i]!='\0'){if(ch[i]!=''){ch1[j]=ch[i];j++;}else;i++;}ch1[j]='\0';j=0;while(ch1[j]!='\0'){ch2[j/4][j%4]=ch1[j];j++;}if(x==1||x==2){cout明文矩阵:endl;for(inta=0;a5;a++){cout\t;for(intb=0;b4;b++){if((ch2[a][b]='a'&&ch2[a][b]='z')||(ch2[a][b]='A'&&ch2[a][b]='Z'))coutch2[a][b];else;}coutendl;}}else;if(x==1)Lieout(ch2);elseif(x==2)Hangout(ch2);elseif(x==3)Zhouqiout(ch1);else;计算机120X班2012XXXXXXX}intmain(){cout请输入明文(最多包含20个字母,空格不限):endl;gets(ch);while(len(ch)20){cout明文字母过长,请重新输入:endl;gets(ch);}cout----------------------------------endl;cout\t[1].列换
本文标题:东北大学信息安全作业
链接地址:https://www.777doc.com/doc-5122303 .html