凯撒凯撒密码实验.doc

凯撒密码  时间:2021-01-24  阅读:()

凯撒密码实验

一、实验目的

通过实验熟练掌握凯撒密码算法学会凯撒密码算法程序设计。 二、实验环境

软件工具:Visual C++ 6.0

操作系统:windows xp

三、实验思想

在密码学中存在着各种各样的置换方式但所有不同的置换方式都包含2个相同的元素。密钥和协议(算法) 。凯撒密码的密钥是3算法是将普通字母表中的字母用密钥对应的字母替换。置换加密的优点就在于它易于实施却难于破解.发送方和接收方很容易事先商量好一个密钥然后通过密钥从明文中生成密文 即是敌人若获取密文通过密文直接猜测其代表的意义在实践中是不可能的。凯撒密码的加密算法极其简单。其加密过程如下:

在这里我们做此约定:明文记为m密文记为c加密变换记为E(k1,m) (其中k1为密钥) 解密变换记为D(k2,m) (k2为解密密钥) (在这里不妨假设k1=k2,记为k) 。凯撒密码的加密过程可记为如下一个变换:c?m+k mod n (其中n为基本字符个数) 同样解密过程可表示为:m?c+k mod n (其中n为基本字符个数) 四、实验数据(源代码)

#include <stdio.h>

#include <stdlib.h>

#include <string.h>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+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++)

{for(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;

}void 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) ) ; //解密输出

}

五、实验心得

通过本次实验将凯撒密码算法的理论应用到实践中来利用C++编程实现了凯撒密码算法的加密过程将理论与实践结合起来加深了课本上凯撒密码算法理论的理解。

欢迎您阅读该资料希望该资料能给您的学习和生活带来帮助如果您还了解更多的相关知识也欢迎您分享出来让我们大家能共同进步、共同成长。

欢迎使用“凯撒密码实验”使用该文档doc格式如大家有其它疑问或者新的见解欢迎大家互相交流、互相进步。

云步云72.5元/月起云服务器,香港安畅/葵湾/将军澳/沙田/大浦CN2机房,2核2G5M

云步云怎么样?云步云是创建于2021年的品牌,主要从事出售香港vps、美国VPS、日本VPS、香港独立服务器、香港站群服务器等,机房有香港、美国、日本东京等机房,目前在售VPS线路有CN2+BGP、CN2 GIA,香港的线路也是CN2直连大陆,该公司旗下产品均采用KVM虚拟化架构。目前,云步云提供香港安畅、沙田、大浦、葵湾、将军澳、新世界等CN2机房云服务器,2核2G5M仅72.5元/月起。点击进...

美国200G美国高防服务器16G,800元

美国高防服务器提速啦专业提供美国高防服务器,美国高防服务器租用,美国抗攻击服务器,高防御美国服务器租用等。我们的海外高防服务器带给您坚不可摧的DDoS防护,保障您的业务不受攻击影响。HostEase美国高防服务器位于加州和洛杉矶数据中心,均为国内访问速度最快最稳定的美国抗攻击机房,带给您快速的访问体验。我们的高防服务器配有最高层级的DDoS防护系统,每款抗攻击服务器均拥有免费DDoS防护额度,让您...

Spinservers:美国独立服务器(圣何塞),$111/月

spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立服务器租用和Hybrid Dedicated等,spinservers这次提供的大硬盘、大内存服务器很多人很喜欢。TheServerStore自1994年以来,它是一家成熟的企业 IT 设备供应商,专门从事二手服务器和工作站业务,在德克萨斯州拥有40,000 平方英尺的仓库,库存中始终有数千台...

凯撒密码为你推荐
骁龙765g和骁龙865哪个好骁龙865八核2.84H和骁龙855plus八核2.96GHZ那个好了?小说软件哪个好用免费现在看小说用什么软件好?手机杀毒软件哪个好手机用杀毒软件,用哪样的好dnf魔枪士转职哪个好dnf魔枪士专职哪个oppo和vivo哪个好OPPO手机和vivo手机哪个好?腾讯空间登录QQ空间登录qq空间登录不了为什么我的QQ空间登陆不上?qq空间登录电脑手机怎么登qq空间电脑版?YunOS手机显示yunos停止运行是什么意思willyunlee生化女战士主要讲的什么
哈尔滨服务器租用 香港主机租用 网站域名备案 什么是二级域名 香港ufo host1plus cdn服务器 nerd gitcafe 国内php空间 网站挂马检测工具 web服务器的架设 怎样建立邮箱 php空间推荐 linode支付宝 dnspod 畅行云 带宽测试 云销售系统 wordpress空间 更多