vigenere的编程实现

vigenere的编程实现

ID:14055556

大小:63.00 KB

页数:7页

时间:2018-07-25

vigenere的编程实现_第1页
vigenere的编程实现_第2页
vigenere的编程实现_第3页
vigenere的编程实现_第4页
vigenere的编程实现_第5页
资源描述:

《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][

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。