凯撒密码实验
一、实验目的
通过实验熟练掌握凯撒密码算法学会凯撒密码算法程序设计。 二、实验环境
软件工具: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格式如大家有其它疑问或者新的见解欢迎大家互相交流、互相进步。
介绍:御速云成立于2021年的国人商家,深圳市御速信息技术有限公司旗下品牌,为您提供安全可靠的弹性计算服务,随着业务需求的变化,您可以实时扩展或缩减计算资源,使用弹性云计算可以极大降低您的软硬件采购成本,简化IT运维工作。主要从事VPS、虚拟主机、CDN等云计算产品业务,适合建站、新手上车的值得选择,拥有华东江苏、华东山东等国内优质云产品;香港三网直连(电信CN2GIA联通移动CN2直连);美国高...
HostKvm发布了夏季特别促销活动,针对香港国际/韩国机房VPS主机提供7折优惠码,其他机房全场8折,优惠后2GB内存套餐月付仅5.95美元起。这是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。下面分享几款香港VPS和韩国VPS的配置和价格信息。...
virmach怎么样?virmach家这几年非常火,从商家的黑五闪购开始,以超低的价格吸引了大批的国人客户,而且商家的机器还是非常稳定的,站长手里的4.75刀年付已经用了两年了,非常稳定,不过商家到国内的线路一般,目前商家新上了夏季优惠促销,价格低到发指,年付7.2美元起,商家反馈将在9月开始更换AMD+NVMe平台,这个消息从年初就有了,不过一直没有更换,目前这个时间也不确定是否准确。点击进入:...