欢迎来到天天文库
浏览记录
ID:22345900
大小:93.00 KB
页数:10页
时间:2018-10-28
《2009151049詹立泉实验一》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、集美大学理学院实验报告课程名称:信息安全班级:信计0912实验成绩:指导教师:姓名:詹立泉实验项目名称:学号:2009151049上机实践日期:2012.10.31实验项目编号:组号:上机实践时间:2学时一、目的通过编程实现凯撒加密、vigenere加密,更加深入的了解其原理,掌握凯撒加密、vigenere加密算法。二、实验内容与设计思想验证理论知识,更重要的是通过实验加强实验手段与实践技能,培养分析问题、解决问题、应用知识的能力和创新精神,全面提高综合素质。凯撒加密:#include#include2、ib.h>//用到了system();不写,可以用getchar();#definestrwidth117//定义长度voidjiamikais(char*mingw);//加密voidjiemikais(char*mima);//解密intmain(void){charch[strwidth];//intweishu;printf("这是移动5位的凯撒加密");//scanf("%d",weishu);printf("请输入明文:");gets(ch);jiamikais(ch);system("pause");jiemi3、kais(ch);system("pause");return0;}voidjiamikais(char*mingw)//加密{for(inti=0;i='a'&&mingw[i]<='z')//判断是否小写字母{mingw[i]+=5;if(mingw[i]>'z'){mingw[i]-=26;}}elseif(mingw[i]>='A'&&mingw[i]<='Z')//判断是否大写字母{mingw[i]+=5;if(mingw[i]>'Z'){mingw[i]-=26;4、}}}printf("输出密文:%s",mingw);//输出数据}voidjiemikais(char*mima)//解密{inti;for(i=0;i='a'&&mima[i]<='z')//判断是否小写字母{mima[i]-=5;if(mima[i]<'a')//不解释,我想这样,理解可能会方便点吧{mima[i]+=26;}}elseif(mima[i]>='A'&&mima[i]<='Z')//判断是否大写字母{mima[i]-=5;if(mima[i]<'A')5、{mima[i]+=26;}}}printf("解密后明文:%s",mima);//输出数据}结果:Vigenere加密:#include#include#include#include#defineMAX100staticintsquare[27][27];char*vigenere(charkey[],charword[]);char*anti_vigenere(charkey[],char*en_word);intmain(void){char6、key[MAX],word[MAX],*en_word;inti,j,k,m;/*初始化vigenere方阵*/for(i=1;i<27;i++){for(j=1;j<27;j++){square[i][j]=63+i+j;if(square[i][j]>90)square[i][j]=square[i][j]-26;}}for(k=1;k<27;k++){for(m=1;m<27;m++){printf("%c",square[k][m]);}printf("");}/**/printf("VigenereCipher7、请输入明文:");scanf("%s",word);printf("输入密钥:");scanf("%s",key);en_word=vigenere(key,word);printf("输出密文为:%s",en_word);printf("t解密:");printf("原文是:%s",anti_vigenere(key,en_word));getch();return0;}/*加密算法*/char*vigenere(charkey[],charword[]){char*text=(char*)malloc(8、MAX*sizeof(char));intkey_length=strlen(key);intword_length=strlen(word);inti,j,c;for(i=0;i=65&&word[i
2、ib.h>//用到了system();不写,可以用getchar();#definestrwidth117//定义长度voidjiamikais(char*mingw);//加密voidjiemikais(char*mima);//解密intmain(void){charch[strwidth];//intweishu;printf("这是移动5位的凯撒加密");//scanf("%d",weishu);printf("请输入明文:");gets(ch);jiamikais(ch);system("pause");jiemi
3、kais(ch);system("pause");return0;}voidjiamikais(char*mingw)//加密{for(inti=0;i='a'&&mingw[i]<='z')//判断是否小写字母{mingw[i]+=5;if(mingw[i]>'z'){mingw[i]-=26;}}elseif(mingw[i]>='A'&&mingw[i]<='Z')//判断是否大写字母{mingw[i]+=5;if(mingw[i]>'Z'){mingw[i]-=26;
4、}}}printf("输出密文:%s",mingw);//输出数据}voidjiemikais(char*mima)//解密{inti;for(i=0;i='a'&&mima[i]<='z')//判断是否小写字母{mima[i]-=5;if(mima[i]<'a')//不解释,我想这样,理解可能会方便点吧{mima[i]+=26;}}elseif(mima[i]>='A'&&mima[i]<='Z')//判断是否大写字母{mima[i]-=5;if(mima[i]<'A')
5、{mima[i]+=26;}}}printf("解密后明文:%s",mima);//输出数据}结果:Vigenere加密:#include#include#include#include#defineMAX100staticintsquare[27][27];char*vigenere(charkey[],charword[]);char*anti_vigenere(charkey[],char*en_word);intmain(void){char
6、key[MAX],word[MAX],*en_word;inti,j,k,m;/*初始化vigenere方阵*/for(i=1;i<27;i++){for(j=1;j<27;j++){square[i][j]=63+i+j;if(square[i][j]>90)square[i][j]=square[i][j]-26;}}for(k=1;k<27;k++){for(m=1;m<27;m++){printf("%c",square[k][m]);}printf("");}/**/printf("VigenereCipher
7、请输入明文:");scanf("%s",word);printf("输入密钥:");scanf("%s",key);en_word=vigenere(key,word);printf("输出密文为:%s",en_word);printf("t解密:");printf("原文是:%s",anti_vigenere(key,en_word));getch();return0;}/*加密算法*/char*vigenere(charkey[],charword[]){char*text=(char*)malloc(
8、MAX*sizeof(char));intkey_length=strlen(key);intword_length=strlen(word);inti,j,c;for(i=0;i=65&&word[i
此文档下载收益归作者所有