欢迎来到天天文库
浏览记录
ID:13224582
大小:147.50 KB
页数:6页
时间:2018-07-21
《维吉尼亚密码的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《应用密码学》课程实验报告---------------维吉尼亚密码的实现一、实验目的维吉尼亚密码是古典密码中非常具有代表的例子。本实验要求用高级语言编写和调试一个简单的维吉尼亚密码实现及分析破译程序。通过本实验可以加深理解维吉尼亚密码及其分析破译。二、实验内容与要求(1)设计一个函数实现维吉尼亚密码;(2)在已知明文及其对应密文的基础上,分析破译维吉尼亚密码,编程求解密钥;(3)要求有程序实现,有实验结果截图,有测试例子。(4)编程语言不限制,可以用tc2.0,vc6.0,.net或java三、实验设备硬件环境:IntelPentiumProc
2、essor1.8G,512M内存 ,windows操作系统软件环境:VC++四、实验步骤#includeusingnamespacestd;#defineMINCHAR32#defineCHARSUM94chartable[CHARSUM][CHARSUM];boolInit();boolEncode(char*key,char*source,char*dest);boolDncode(char*key,char*source,char*dest);intmain(){if(!Init()){cout<<"初始化错误!"<3、ndl;return1;}charkey[256];charstr1[256];charstr2[256];intoperation;while(1){do{cout<<"请选择一个操作:1.加密;2.解密;-1.退出";cin>>operation;}while(operation!=-1&&operation!=1&&operation!=2);if(operation==-1)return0;elseif(operation==1)//加密{cout<<"请输入密钥:";cin>>key;cout<<"请输入待加密字符串:";cin>>4、str1;Encode(key,str1,str2);cout<<"加密后的字符串:"<>key;cout<<"请输入待解密字符串:";cin>>str1;Dncode(key,str1,str2);cout<<"解密后的字符串:"<5、M;j++){table[i][j]=MINCHAR+(i+j)%CHARSUM;}}returntrue;}//加密//key:密钥//source:待加密的字符串//dest:经过加密后的字符串boolEncode(char*key,char*source,char*dest){char*tempSource=source;char*tempKey=key;char*tempDest=dest;do{*tempDest=table[(*tempKey)-MINCHAR][(*tempSource)-MINCHAR];tempDest++;if6、(!(*(++tempKey)))tempKey=key;}while(*tempSource++);dest[strlen(source)]=0;returntrue;}//解密//key:密钥//source:待解密的字符串//dest:经过解密后的字符串boolDncode(char*key,char*source,char*dest){char*tempSource=source;char*tempKey=key;char*tempDest=dest;charoffset;do{offset=(*tempSource)-(*tempKey7、);offset=offset>=0?offset:offset+CHARSUM;*tempDest=MINCHAR+offset;tempDest++;if(!(*(++tempKey)))tempKey=key;}while(*++tempSource);dest[strlen(source)]=0;returntrue;}五、实验结果与分析密钥:AF待加密字符串:WCTHF
3、ndl;return1;}charkey[256];charstr1[256];charstr2[256];intoperation;while(1){do{cout<<"请选择一个操作:1.加密;2.解密;-1.退出";cin>>operation;}while(operation!=-1&&operation!=1&&operation!=2);if(operation==-1)return0;elseif(operation==1)//加密{cout<<"请输入密钥:";cin>>key;cout<<"请输入待加密字符串:";cin>>
4、str1;Encode(key,str1,str2);cout<<"加密后的字符串:"<>key;cout<<"请输入待解密字符串:";cin>>str1;Dncode(key,str1,str2);cout<<"解密后的字符串:"<5、M;j++){table[i][j]=MINCHAR+(i+j)%CHARSUM;}}returntrue;}//加密//key:密钥//source:待加密的字符串//dest:经过加密后的字符串boolEncode(char*key,char*source,char*dest){char*tempSource=source;char*tempKey=key;char*tempDest=dest;do{*tempDest=table[(*tempKey)-MINCHAR][(*tempSource)-MINCHAR];tempDest++;if6、(!(*(++tempKey)))tempKey=key;}while(*tempSource++);dest[strlen(source)]=0;returntrue;}//解密//key:密钥//source:待解密的字符串//dest:经过解密后的字符串boolDncode(char*key,char*source,char*dest){char*tempSource=source;char*tempKey=key;char*tempDest=dest;charoffset;do{offset=(*tempSource)-(*tempKey7、);offset=offset>=0?offset:offset+CHARSUM;*tempDest=MINCHAR+offset;tempDest++;if(!(*(++tempKey)))tempKey=key;}while(*++tempSource);dest[strlen(source)]=0;returntrue;}五、实验结果与分析密钥:AF待加密字符串:WCTHF
5、M;j++){table[i][j]=MINCHAR+(i+j)%CHARSUM;}}returntrue;}//加密//key:密钥//source:待加密的字符串//dest:经过加密后的字符串boolEncode(char*key,char*source,char*dest){char*tempSource=source;char*tempKey=key;char*tempDest=dest;do{*tempDest=table[(*tempKey)-MINCHAR][(*tempSource)-MINCHAR];tempDest++;if
6、(!(*(++tempKey)))tempKey=key;}while(*tempSource++);dest[strlen(source)]=0;returntrue;}//解密//key:密钥//source:待解密的字符串//dest:经过解密后的字符串boolDncode(char*key,char*source,char*dest){char*tempSource=source;char*tempKey=key;char*tempDest=dest;charoffset;do{offset=(*tempSource)-(*tempKey
7、);offset=offset>=0?offset:offset+CHARSUM;*tempDest=MINCHAR+offset;tempDest++;if(!(*(++tempKey)))tempKey=key;}while(*++tempSource);dest[strlen(source)]=0;returntrue;}五、实验结果与分析密钥:AF待加密字符串:WCTHF
此文档下载收益归作者所有