加密程序的编写

加密程序的编写

ID:40620144

大小:454.00 KB

页数:6页

时间:2019-08-05

上传者:U-2437
加密程序的编写_第1页
加密程序的编写_第2页
加密程序的编写_第3页
加密程序的编写_第4页
加密程序的编写_第5页
资源描述:

《加密程序的编写》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

实验五加密程序的编写【实验目的】1.简单加密方法的原理2.凯撒密码的原理及程序的编写【实验开设方式】个人【实验设备与环境】1连网的个人计算机2Windows2000系统平台【相关知识点】凯撒密码就是单表代替密码,它的每一个明文字符都由其右边第3个(模26)字符代替(A由D代替,B由E代替,W由Z代替,X由A代替,Y由B代替,Z由C代替)。【CAESAR密码几种变换】(1)加法变换c≡(m+k)mod26其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,叫密钥。比如:datasecurity对应数据序列4,1,20,1,19,5,3,21,18,9,20,25,当k=5时,得密文序列9,6,25,6,24,10,8,0,23,14,25,4。(2)乘同余码:移位或等间隔抽取码,明密文之间没有一一对应关系。(容易产生多义性)。变换按照同余乘法进行:加密变换:C=P´k(mod26)解密变换:P=C¸k(mod26)密钥:k 【实验内容:】1.请同学们采用一种你熟悉的语言编写通过凯撒密码原理实现的加密器。要求:对文档中的任意几个字符能做正确的加密变换。加密器做加法变换后仍然可以正确加密。2.通过凯撒密码的原理实现解密器。【实验方法步骤】程序:#include#includecharencrypt(charch,intn)/*加密函数,把字符向右循环移位n*/{while(ch>='A'&&ch<='Z'){return('A'+(ch-'A'+n)%26);}while(ch>='a'&&ch<='z'){return('a'+(ch-'a'+n)%26);}returnch;}voidmenu()/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*/{clrscr();printf(" =========================================================");printf(" 1.Encryptthefile");printf(" 2.Decryptthefile");printf(" 3.Forcedecryptfile");printf(" 4.Quit ");printf("========================================================= ");printf("Pleaseselectaitem:");return;}main(){inti,n;charch0,ch1; FILE*in,*out;charinfile[20],outfile[20];textbackground(BLACK);textcolor(LIGHTGREEN);clrscr();sleep(3);/*等待3秒*/menu();ch0=getch();while(ch0!='4'){if(ch0=='1'){clrscr();printf(" Pleaseinputtheinfile:");scanf("%s",infile);/*输入需要加密的文件名*/if((in=fopen(infile,"r"))==NULL){printf("Cannotopentheinfile! ");printf("Pressanykeytoexit! ");getch();exit(0);}printf("Pleaseinputthekey:");scanf("%d",&n);/*输入加密密码*/printf("Pleaseinputtheoutfile:");scanf("%s",outfile);/*输入加密后文件的文件名*/if((out=fopen(outfile,"w"))==NULL){printf("Cannotopentheoutfile! ");printf("Pressanykeytoexit! ");fclose(in);getch();exit(0);}while(!feof(in))/*加密*/{fputc(encrypt(fgetc(in),n),out);}printf(" Encryptisover! ");fclose(in);fclose(out);sleep(1); }if(ch0=='2'){clrscr();printf(" Pleaseinputtheinfile:");scanf("%s",infile);/*输入需要解密的文件名*/if((in=fopen(infile,"r"))==NULL){printf("Cannotopentheinfile! ");printf("Pressanykeytoexit! ");getch();exit(0);}printf("Pleaseinputthekey:");scanf("%d",&n);/*输入解密密码(可以为加密时候的密码)*/n=26-n;printf("Pleaseinputtheoutfile:");scanf("%s",outfile);/*输入解密后文件的文件名*/if((out=fopen(outfile,"w"))==NULL){printf("Cannotopentheoutfile! ");printf("Pressanykeytoexit! ");fclose(in);getch();exit(0);}while(!feof(in)){fputc(encrypt(fgetc(in),n),out);}printf(" Decryptisover! ");fclose(in);fclose(out);sleep(1);}if(ch0=='3'){clrscr();printf(" Pleaseinputtheinfile:");scanf("%s",infile);/*输入需要解密的文件名*/if((in=fopen(infile,"r"))==NULL){ printf("Cannotopentheinfile! ");printf("Pressanykeytoexit! ");getch();exit(0);}printf("Pleaseinputtheoutfile:");scanf("%s",outfile);/*输入解密后文件的文件名*/if((out=fopen(outfile,"w"))==NULL){printf("Cannotopentheoutfile! ");printf("Pressanykeytoexit! ");fclose(in);getch();exit(0);}for(i=1;i<=25;i++)/*暴力破解过程,在察看信息正确后,可以按'Q'或者'q'退出*/{rewind(in);rewind(out);clrscr();printf("========================================================== ");printf("Theoutfileis: ");printf("========================================================== ");while(!feof(in)){ch1=encrypt(fgetc(in),26-i);putch(ch1);fputc(ch1,out);}printf(" ======================================================== ");printf("Thecurrentkeyis:%d ",i);/*显示当前破解所用密码*/printf("Press'Q'toquitandotherkeytocontinue...... ");printf("========================================================== ");ch1=getch();if(ch1=='q'||ch1=='Q')/*按'Q'或者'q'时退出*/{clrscr();printf(" GoodBye! "); fclose(in);fclose(out);sleep(3);exit(0);}}printf(" Forcedecryptisover! ");fclose(in);fclose(out);sleep(1);}menu();ch0=getch();}clrscr();printf(" GoodBye! ");sleep(3);}

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

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

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