网站大量收购独家精品文档,联系QQ:2885784924

Caesar算法的.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Caesar算法的

《应用密码学》课程论文 论文题目: Caesar算法 姓 名: 学 号: 专业班级: 联系电话: 2014年10月 Caesar算法 算法原理 恺撒密码 方法:字母表中的每个字母用该字母后面的第三个字母进行替代,字母表是循环的。 设明文字母为p,密文字母用C代替,字母序号为1-26; C = E(p)=(p+3)mod(26) 移位可以是任何量,通用的恺撒加密算法是: C = E(p)=(p+k)mod(26) K在1到25的范围取值; 恺撒解密算法为:p = D(C)=(C - k)mod(26) 算法实现 流程框图 否 是 否 是 是 否 代码 /*凯撒密码的加密和解密过程,文件输入加密文件,控制台输入加密密钥 */ #include stdio.h #include stdlib.h #include conio.h void main(){ int k,x,y,z;//k,x,y分别存储密钥,明文,密文,译文的单个值 int count;//解密时使用的循环变量 FILE*fp, *fc, *fd; //明文文件,密文文件,解密文件 //输入密钥k,加入纠错功能 printf(请输入凯撒密码的密钥(0-25,且为整数,若输入浮点数,取其整数部分) k=); scanf(%d, k); while(k0 || k25){ printf(输入错误,请重新输入凯撒密码的密钥(0-25,且为整数,若输入浮点数,取其整数部分) k=); scanf(%d, k); } printf(密钥输入成功\n); //从文件输入明文,并将明文转化成对应的密文,将密文写入文档 if((fp=fopen(plaintext.txt,rt))==NULL){//打开明文文件 printf(明文文件打开时出错,按任意键退出!\n); getch(); exit(0); } if((fc=fopen(ciphertext.txt,wt))==NULL){//打开密文文件 printf(密文文件打开时出错,按任意键退出!\n); getch(); exit(1); } x=fgetc(fp); while(feof(fp)==0){//将明文逐个翻译成密文; feof(fp)=0表示上次没读完,所以最后结果会多读一次,解决办法是将x=fgetc(fp);加在循环之前 if(x=97x=122){ y=(x-a+k)%26+A; fputc((char)y,fc); } else if(x=65x=90){ y=(x-A+k)%26+A; fputc((char)y,fc); } else{ //明文中出现非法字符时忽略 } x=fgetc(fp); } fclose(fp); fclose(fc); printf(加密成功\n); //根据密文译出明文 if((fc=fopen(ciphertext.txt,rt))==NULL){//打开密文文件 printf(密文文件打开时出错,按任意键退出!\n); getch(); exit(2); } if((fd=fopen(decode.txt,wt))==NULL){//打开译文文件 printf(译文文件打开时出错,按任意键退出!\n); getchar(); exit(3); } for(count = 0; count 26; count ++){//采用强行攻击的方法译码,执行26轮译码 y=fgetc(fc); while(feof(fc) ==0){ z=(y-A-count + 26)%26+A; fputc((char)z,fd); y=fgetc(fc); } fputc(\n\r,fd); rewind(fc);//将文件内部的位置指针重新指向文件的开头 } fclose(fc); fclose(fd); printf(解密成功,按任意键退出\n); getch(); } 实验结果 明文文件 加密后文件 解密后文件 译码后的文件中第五行的译文是有意义的,为正确的译码,此时k = 4 算法分析 凯撒算法的加密和解密都很简单

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档