凯撒密码--C语言实现.doc

上传人:11****ws 文档编号:3073219 上传时间:2019-05-20 格式:DOC 页数:8 大小:50.50KB
下载 相关 举报
凯撒密码--C语言实现.doc_第1页
第1页 / 共8页
凯撒密码--C语言实现.doc_第2页
第2页 / 共8页
凯撒密码--C语言实现.doc_第3页
第3页 / 共8页
凯撒密码--C语言实现.doc_第4页
第4页 / 共8页
凯撒密码--C语言实现.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、凯撒密码是一种非常古老的加密方法,相传当年凯撒大地行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全。他的原理很简单,说到底就是字母于字母之间的替换。下面让我们看一个简单的例子:“baidu”用凯撒密码法加密后字符串变为“edlgx” ,它的原理是什么呢?把“baidu”中的每一个字母按字母表顺序向后移 3 位,所得的结果就是刚才我们所看到的密文。/*凯撒密码实现要求,将明文字母变成它后面第三个字母,后面的循环到前面!公式为 f(a)=(f(a)+3)%26*/#include int main()char P100;/*定义明文长度 */char C

2、100;/*定义密文长度 */int K=3,i;printf(“Please input Plaintext:n“); /*输入明文*/gets(P); /* 接受明文*/for(i=0;Pi!=0;i+) /*逐个判断字母的大小*/if(Pi=aprintf(“n=“);printf(“n1.Encrypt the file“);printf(“n2.Decrypt the file“);printf(“n3.Quitn“);printf(“=n“);printf(“Please select a item:“);return;char encrypt(char ch,int n)/*加密

3、函数,把字符向右循环移位 n*/while(ch=A*(pwd+i)!=0;i+)if(*(pwd+i)=aelse *(pwd+i)=z-(key%26-(*(pwd+i)-a)-1;else if(*(pwd+i)=Aelse *(pwd+i)=Z-(key%26-(*(pwd+i)-A)-1;return pwd;void main()char *pwd;int key;pwd=(char*)malloc(sizeof(char);printf(“Input your password:“);gets(pwd);printf(“Input a key:“);scanf(“%d“,prin

4、tf(“The Ciphertext is:“);printf(“%sn“,Encrypt(pwd,key);-/*替换法:*/#include #include #include void table(char *keyword) /*筛选密钥(去重复去空格)*/int i,j,k;for(i=0;*(keyword+i)!=0;i+)for(j=i;*(keyword+j)!=0;j+)if(i!=j)if(*(keyword+i)=*(keyword+j)|*(keyword+j)= )for(k=j;*(keyword+k)!=0;k+)*(keyword+k)=*(keyword+k

5、+1);j-;void newTab(char *keyword) /*生成密钥表*/char ch;int i;int t;for(t=0;*(keyword+t)!=0;t+);for(ch=a;ch=z;ch+)for(i=0;*(keyword+i)!=ch;i+)if(*(keyword+i)=0)*(keyword+t)=ch;t+;break;*(keyword+t)=0;char *Ciphertext(char *keyword,char *Plaintext) /*按密码表加密*/char ch;int i,j;for(i=0;*(Plaintext+i)!=0;i+)fo

6、r(ch=a,j=0;ch=z;ch+,j+)if(*(Plaintext+i)=ch)*(Plaintext+i)=*(keyword+j);break;return Plaintext;char *Decrypt(char *keyword,char *Plaintext) /*解密*/char ch;int i,j;for(i=0;*(Plaintext+i)!=0;i+)for(ch=a,j=0;*(keyword+j)!=0;ch+,j+)if(*(Plaintext+i)=*(keyword+j)*(Plaintext+i)=ch;break;return Plaintext;vo

7、id main()char *keyword,*Plaintext,*tmp=NULL;keyword=(char*)malloc(sizeof(char);Plaintext=(char*)malloc(sizeof(char);printf(“Input key word:“); /*输入欲用密钥*/gets(keyword);printf(“Input Plaintext:“); /*输入要转换的明文*/gets(Plaintext);table(keyword); /*去空格去重复*/newTab(keyword); /*生成密码表 */tmp=Ciphertext(keyword,Plaintext); /*对应着密码表生成密文*/puts(tmp); /*输出密文*/puts(Decrypt(keyword,tmp); /*解密输出*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。