欢迎来到天天文库
浏览记录
ID:52715829
大小:153.50 KB
页数:6页
时间:2020-03-29
《实验一-古典密码-Vigernere算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一古典密码-Vigenere算法班级:学号:姓名:一、实验目的1、理解简单加密算法的原理;2、掌握Vigenere密码的原理,完成Vigenere密码加解密程序的编写;3、通过实验,加深对古典密码体制的了解,掌握对字符进行灵活处理的方法。二,实验要求根据Vigenere密码的原理编写程序,对输入的符号串能够根据设置的密钥分别正确实现Vigenere加密和解密功能。三,实验过程及内容源程序#include"stdio.h"#include"string.h"#defineBUF_MAX100staticintsquare[27][27];//
2、密钥统一转换为大写字母voidUpperKey(charkey[]){intkey_length=strlen(key);for(inti=0;i='a'&&key[i]<='z'){key[i]-=32;}}}//Vigenere加密voidVigenereEncrypt(charword[],charkey[]){chartext[BUF_MAX];intkey_length=strlen(key);intword_length=strlen(word);inti,j,k;for(i=0
3、;i='a'&&word[i]<='z'){k=word[i]-'a';k=(k+key[j]-'A')%26;text[i]=k+'a';}elseif(word[i]>='A'&&word[i]<='Z'){k=word[i]-'A';k=(k+key[j]-'A')%26;text[i]=k+'A';}else{text[i]=word[i];}}text[i]=' ';printf("Encryptstring:");puts(text);}//V
4、igenere解密voidVigenereDecript(charen_word[],charkey[]){charword[BUF_MAX];intkey_length=strlen(key);intword_length=strlen(en_word);inti,j,k;for(i=0;i='a'&&en_word[i]<='z'){k=en_word[i]-'a';k=(k-(key[j]-'A')+26)%26;word[i]=k+'a';}e
5、lseif(en_word[i]>='A'&&en_word[i]<='Z'){k=en_word[i]-'A';k=(k-(key[j]-'A')+26)%26;word[i]=k+'A';}else{word[i]=en_word[i];}}word[i]=' ';printf("Decryptstring:");puts(word);}intmain(void){charkey[BUF_MAX],ch;charstr[BUF_MAX]={' '};inti,j;//初始化Vigenere方阵for(i=1;i<27;i++){for(
6、j=1;j<27;j++){square[i][j]=63+i+j;if(square[i][j]>90){square[i][j]=square[i][j]-26;}}}printf("VigenereCode");printf("1:Encryption");printf("2:Decryption");printf("Pleaseinputyourchoose:");for(i=0;;i++){scanf("%d",&j);if(j==1){VigenereEncrypt(str,key);break;}elseif(j=
7、=2){VigenereDecript(str,key);break;}else{printf("输入错误,重新输入:");}}fflush(stdin);printf("Pleaseinputastring:");i=0;do{scanf("%c",&ch);str[i++]=ch;}while(ch!=''&&i8、igenere解密图2Vigenere解密结果(输入正确密钥)图3Vigenere解密结果(输入错误密钥)四,实验中的问题及心得示范源程序在DEVC+
8、igenere解密图2Vigenere解密结果(输入正确密钥)图3Vigenere解密结果(输入错误密钥)四,实验中的问题及心得示范源程序在DEVC+
此文档下载收益归作者所有