资源描述:
《vigenere的编程实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、实验目的与意义1、实验目的:通过编程实现vigenere加密,更加深入的了解其原理,掌握vigenere算法。2、实验意义:验证理论知识,更重要的是通过实验加强实验手段与实践技能,培养分析问题、解决问题、应用知识的能力和创新精神,全面提高综合素质。二、实验环境操作系统:WindowsXP调试软件名称:MicrosoftVisualstudio版本号:2005上机地点:综合楼208三、实验的预习内容1、预习内容:1、vigenerecipher加密规则:1)找到一个关键字作为密钥;2)将关键字重复的写在明文上;3)根据vigener
2、etable找出对应的密文2、解密:1)根据vigeneretable找到中对应的字母;2)再看密文字母对应的关键字字母;3)唯一的确定明文字母。3、关键的代码(如何让3个字母实现类似vigeneretable的形式)#include"stdafx.h"int_tmain(intargc,_TCHAR*argv[]){chara[3]={'a','b','c'};chartable[3][3];for(inti=0;i<3;i++)for(intj=0;j<3;j++)table[i][j]=a[(j+i)%3];for(inti=0
3、;i<3;i++){for(intj=0;j<3;j++){printf("%c",table[i][j]);}printf("");}return0;}2、实验思路:打出vigeneretable->输入关键字->用户输入明文->进行加密>得到密文;解密原理与加密基本相同。1、程序框图:开始输入关键字输入明文得到密文并将其输出得到解密过程中关键字输出解密后明文结束一、实验的步骤与调试方法1、实验步骤:(1)建立win32consoleapplicationg工作空间,名为:vigenere_20083612;(2)新建xuvi.
4、cpp源文件;(3)按照实验思路编写源代码,完成之后进行编译、链接、执行;(4)程序执行时按提示输入关键字、明文,验证输出密文,及解密之后输出明文是否正确。2、调试方法:打表时出现错误。经调整后发现是数组定义问题。二、实验数据与实验结果一、实验用程序清单(要有注释)#include"Stdio.h"#include"Conio.h"#include"string.h"#include"malloc.h"#defineMAX100staticintsquare[27][27];char*vigenere(charkey[],charwo
5、rd[]);char*anti_vigenere(charkey[],char*en_word);intmain(void){charkey[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++){print
6、f("%c",square[k][m]);}printf("");}/**/printf("VigenereCipherPleaseinputplaintext:");scanf("%s",word);printf("inputthekey:");scanf("%s",key);en_word=vigenere(key,word);printf("Theresultis:%s",en_word);printf("tDecryption:");printf("Theplaintextis:%s",anti_
7、vigenere(key,en_word));getch();return0;}/*加密算法*/char*vigenere(charkey[],charword[]){char*text=(char*)malloc(MAX*sizeof(char));intkey_length=strlen(key);intword_length=strlen(word);inti,j,c;for(i=0;i=65&&word[i]<=90)
8、
9、(word[i]>=97&&word[i]<=
10、122)){if(word[i]>=97&&word[i]<=122){c=word[i]-96;}else{c=word[i]-64;}j=i%key_length;text[i]=square[key[j]-96][