凯撒凯撒密码实验.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格式如大家有其它疑问或者新的见解欢迎大家互相交流、互相进步。

腾讯云轻量应用服务器关于多个实例套餐带宽

腾讯云轻量应用服务器又要免费升级配置了,之前已经免费升级过一次了(腾讯云轻量应用服务器套餐配置升级 轻量老用户专享免费升配!),这次在上次的基础上再次升级。也许这就是良心云吧,名不虚传。腾讯云怎么样?腾讯云好不好。腾讯云轻量应用服务器 Lighthouse 是一种易于使用和管理、适合承载轻量级业务负载的云服务器,能帮助个人和企业在云端快速构建网站、博客、电商、论坛等各类应用以及开发测试环境,并提供...

HostDare($33.79/年)CKVM和QKVM套餐 可选CN2 GIA线路

关于HostDare服务商在之前的文章中有介绍过几次,算是比较老牌的服务商,但是商家背景财力不是特别雄厚,算是比较小众的个人服务商。目前主流提供CKVM和QKVM套餐。前者是电信CN2 GIA,不过库存储备也不是很足,这不九月份发布新的补货库存活动,有提供九折优惠CN2 GIA,以及六五折优惠QKVM普通线路方案。这次活动截止到9月30日,不清楚商家这次库存补货多少。比如 QKVM基础的五个方案都...

百驰云(19/月),高性能服务器,香港三网CN2 2核2G 10M 国内、香港、美国、日本、VPS、物理机、站群全站7.5折,无理由退换,IP免费换!

百驰云成立于2017年,是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。百驰云提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以及国际顶尖品牌硬件。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端...

凯撒密码为你推荐
p图软件哪个好用什么P图软件好用?闪迪和金士顿哪个好tf卡闪迪和金士顿哪个更好宝来和朗逸哪个好大众朗逸和宝来,哪个好点?网页传奇哪个好玩近有什么好玩的网页传奇介绍么速腾和朗逸哪个好大众速腾和朗逸哪个比较好?家用!51空间登录51空间,怎么添加啊?怎么登陆?dns服务器未响应电脑网络连接不到,DNS服务器未响应是什么意思?360云盘企业版企业云盘和360云盘有什么不同360云盘下载速度慢怎么办请问现在有没有人在用手机360云盘,为什么手机端下载速度会怎么慢,我的网速很快。便宜的反义词便宜的近义词是什么
合肥虚拟主机 域名注册使用godaddy 免费申请域名和空间 ddos z.com 宕机监控 dropbox网盘 论坛空间 qq数据库 小米数据库 中国电信测速112 新天域互联 空间论坛 七夕促销 卡巴斯基破解版 网游服务器 安徽双线服务器 香港亚马逊 联通网站 空间首页登陆 更多