信息安全古典密码之凯撒密码_第1页
信息安全古典密码之凯撒密码_第2页
信息安全古典密码之凯撒密码_第3页
信息安全古典密码之凯撒密码_第4页
信息安全古典密码之凯撒密码_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《网络攻击与防御》实验报告计算机科学与技术学院计算机系网络教研室制课程名称:信息安全技术计算机科学与技术学院计算机系网络教研室制课程名称:信息安全技术实验名称:古典密码之凯撒密码指导教师:学生姓名:组号:实验日期:实验地点:实验成绩:实验报告书③已知c1=rxwvlghwkheleoh,wkhvhvlazrugvduhwkhprvwidprxvlqdoowkholwhudwxuhriwkhzruog.wkhbzhuhvsrnhqebkdpohwzkhqkhzdvwklqnlqjdorxg,dqgwkhbduhwkhprvwidprxvzrugvlqvkdnhvshduhehfdxvhkdpohwzdvvshdnlqjqrwrqobiruklpvhoiexwdovriruhyhubwklqnlqjpdqdqgzrpdq.wrehruqrwwreh,wrolyhruqrwwrolyh,wrolyhulfkobdqgdexqgdqwobdqghdjhuob,ruwrolyhgxoobdqgphdqobdqgvfdufhob.dsklorvrskhurqfhzdqwhgwrnqrzzkhwkhukhzdvdolyhruqrw,zklfklvdjrrgtxhvwlrqiruhyhubrqhwrsxwwrklpvhoirffdvlrqdoob.khdqvzhuhglwebvdblqj:"lwklqn,wkhuhiruhdp.",求p1。(高级解密)对给定较长密文文件进行解密测试,测试结果填入表。要求密文的内容不少于1000个英文单词,使用凯撒密码加密,加密密码保密。正确率=正确单词数/单词总数,智能程度:优秀(解密结果正确与否不需要人工判断)、一般。表四、实验过程与分析在允许输入密码条件下的实验结果。从file1中读入明文,将密文存放在file2中在不允许输入密码条件下的实验结果在有单个字母的情况下,初级解密无单个字母下,中级解密,依次用1-25作为密钥。高级解密初级解密:中级解密:高级解密:五、实验结果总结是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,\t"/item/%E6%81%BA%E6%92%92%E5%AF%86%E7%A0%81/_blank"明文中的所有字母都在\t"/item/%E6%81%BA%E6%92%92%E5%AF%86%E7%A0%81/_blank"字母表上向后(或向前)按照一个固定数目进行偏移后被替换成\t"/item/%E6%81%BA%E6%92%92%E5%AF%86%E7%A0%81/_blank"密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。源代码:#include<fstream>#include<iostream>#include<string>#include<cmath>#include<Windows.h>#defineN1000#defineTARGET0.065379#defineLIST_LEN26usingnamespacestd;constdoublep[LIST_LEN]={0.082,0.015,0.028,0.042,0.127,0.022,0.02,0.061,0.07,0.001,0.008,0.04,0.024,0.067,0.075,0.019,0.001,0.06,0.063,0.09,0.028,0.01,0.024,0.02,0.001,0.001};stringdict[7]={"we","be","to","am","you","are","the"};voidfile_print(char*filename){ifstreaminfile;charch;inti=0;infile.open(filename,ios::in);if(!infile){cout<<"openerror!"<<endl;exit(1);}while(infile.get(ch)){cout<<ch;}cout<<endl;infile.close();}intnumber(char*filename){ifstreaminfile;charch;inti=0;infile.open(filename,ios::in);if(!infile){cout<<"openerror!"<<endl;exit(1);}while(infile.get(ch)){i++;}infile.close();returni;}voidEncrypt(){ifstreaminfile;ofstreamoutfile;charch,*code;unsignedcharstr[N];code=newchar(2);cout<<"明文为:"<<endl;file_print("file1.txt");intn=number("file1.txt");infile.open("file1.txt",ios::in);if(!infile){cout<<"openerror!"<<endl;exit(1);}cout<<"请输入一位英文字符密码:"<<endl;cin>>code;code[1]='\0';//cout<<code[1];if(code[1]!='\0')cout<<"输入错误,请输入一位英文字符:"<<endl;if(code[0]>=65&&code[0]<=90){code[0]+=32;}for(inti=0;i<n;i++){infile>>str[i];}outfile.open("file2.txt");if(!outfile){cout<<"openerror!"<<endl;exit(1);}intkey=code[0]-97;cout<<"密钥为:"<<key<<endl;for(i=0;str[i]!=0;i++){if(str[i]>=65&&str[i]<=90)str[i]+=32;if(str[i]<97||str[i]>122)continue;str[i]+=key;if(str[i]>122){str[i]-=26;}outfile.put(str[i]);}infile.close();outfile.close();cout<<"密文为:"<<endl;file_print("file2.txt");}voidprimary(charc){DWORDstart_time=GetTickCount();ifstreaminfile;charch;unsignedcharstr[N];infile.open("file3.txt",ios::in);if(!infile){cout<<"openerror!"<<endl;exit(1);}for(inti=0;infile.get(ch);i++){str[i]=ch;//cout<<str[i];}intkey=abs(c-'a');//cout<<key;cout<<"密文为:"<<endl;file_print("file3.txt");intn=number("file3.txt");//cout<<n;cout<<"明文为:"<<endl;for(i=0;i<n;i++){if(str[i]=='') {str[i]=32; cout<<str[i]; }if(str[i]<97||str[i]>122) cout<<str[i];else{ str[i]-=key; if(str[i]<97)str[i]+=26; cout<<str[i]; }}cout<<endl;infile.close();DWORDend_time=GetTickCount();cout<<"解密时间为:"<<end_time-start_time<<"ms!"<<endl;}voidMediate_senior(unsignedcharstr[],intn){intkey=1;intsimilar=0;for(inti=0;i<n;i++){if(str[i]=='') {str[i]=32; cout<<str[i]; }if(str[i]<97||str[i]>122) cout<<str[i];else{ str[i]-=key; if(str[i]<97)str[i]+=26; cout<<str[i]; }}}voidintermediate(){DWORDstart_time=GetTickCount();ifstreaminfile;charch;unsignedcharstr[N];infile.open("file3.txt",ios::in);if(!infile){cout<<"openerror!"<<endl;exit(1);}cout<<"密文为:"<<endl;for(inti=0;infile.get(ch);i++) {str[i]=ch; cout<<ch; }cout<<endl;for(intn=1;n<=25;n++){cout<<"k="<<n<<'';Mediate_senior(str,number("file3.txt"));printf("\n");}DWORDend_time=GetTickCount();cout<<"解密时间为:"<<end_time-start_time<<"ms!"<<endl;}/*统计filename中字母出现频率,存放在数组q中*/voidcount(constcharfilename[],doubleq[LIST_LEN]){inti,len=0;/*len为字母总个数约等于密文长度*/FILE*fin=fopen(filename,"r");charch;for(i=0;i<LIST_LEN;i++)q[i]=0;while((ch=fgetc(fin))!=EOF){if(isalpha(ch)){len++;ch=tolower(ch);q[ch-'a']+=1;}}fclose(fin);for(i=0;i<LIST_LEN;i++)q[i]/=len;}/*破解密钥key,并且将其中数组q存放密文字母出现频率*/intanalysis(constcharfilename[],doubleq[LIST_LEN]){inti,j,key=0;doubleeps=1;/*eps存储与TARGET最小差值*/count(filename,q);for(j=0;j<LIST_LEN;j++){/*变量j穷举密钥*/doublesum=0,tem;for(i=0;i<LIST_LEN;i++){/*求sum{p[i]*q[i+j]}之和*/intt=(i+j)%26;sum+=p[i]*q[t];}tem=fabs(sum-TARGET);if(tem<eps){eps=tem;key=j;}}returnkey:}voidsenior(){ifstreaminfile;charch;unsignedcharstr[N];infile.open("file4.txt",ios::in);if(!infile){cout<<"openerror!"<<endl;exit(1);}for(inti=0;infile.get(ch);i++){str[i]=ch;//cout<<str[i];}doubleq[LIST_LEN];intkey=analysis("file4.txt",q);//cout<<key;file_print("file4.txt");intn=number("file4.txt");//cout<<n;for(i=0;i<n;i++){if(str[i]=='') {str[i]=32; cout<<str[i]; }if(str[i]<97||str[i]>122) cout<<str[i];else{ str[i]-=key; if(str[i]<97)str[i]+=26; cout<<str[i]; }}cout<<endl;infile.clo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论