庞贝贝-信管112-实验报告一-凯撒密码.doc

庞贝贝-信管112-实验报告一-凯撒密码.doc

ID:61448091

大小:191.00 KB

页数:9页

时间:2021-01-31

庞贝贝-信管112-实验报告一-凯撒密码.doc_第1页
庞贝贝-信管112-实验报告一-凯撒密码.doc_第2页
庞贝贝-信管112-实验报告一-凯撒密码.doc_第3页
庞贝贝-信管112-实验报告一-凯撒密码.doc_第4页
庞贝贝-信管112-实验报告一-凯撒密码.doc_第5页
资源描述:

《庞贝贝-信管112-实验报告一-凯撒密码.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、信息安全原理与应用实验报告一凯撒密码姓名:庞贝贝班级:信管112指导老师:周一鹏学号:日期:2013/9/14班级:信管112学号:姓名:庞贝贝同组同学学号:同组同学姓名:实验日期:2013年9月14日交报告日期:2013年9月20日实验(No.1)题目:凯撒密码实验目的及要求:1.掌握基本凯撒密码的原理;2.掌握凯撒密码原理后,用编程实现对明文的加密与解密操作。实验设备:1.实验平台为VC++6.0实验内容:1、凯撒密码原理:让每个字母等价于一个数值……则加密公式为:其中:k为密钥,p为明文,C为密文。解密公式为:

2、2、使用c++语言实现凯撒密码算法2.1.客户需求分析课本上明文用小写字母表示,明文用大写字母表示,但在实际应用中,用户在书写明文的时候由于书写习惯,总会出现大写字母,如果硬性规定明文只能用小写字母,这样的软件只会给用户带来不便,所以本程序将允许明文中出现大写字母。而对于密文,我们统一采用大写字母。2.2.概要设计2.2.1.数据结构设计考虑到用户可能会输入多行,每行的语句长度可能不一样,所以我们采用链表的数据结构,为每页设置一个头结点head,每行设置一个行结点,行结点有两个指针域,一个data指针,一个next指

3、针,data指针指向本行数据,next指针指向下一行的行结点。每行采用动态数组结构实现。typedefstructLNode//行结点定义{char*data;LNode*next;}LNode,*linklist;如图1.所示为数据结构的形象表示图12.2.2.模块设计本程序分为4个模块,分别为:主程序模块、明文创建模块、明文转换为密文并输出模块(加密模块)、密文转换为明文并输出模块(解密模块)。各模块之间的关系主程序模块momokuai明文创建模块加密模块解密模块2.3.详细设计2.3.1.源代码为:#inclu

4、de#include#includetypedefstructLNode//行结点定义{char*data;LNode*next;}LNode,*linklist;linklistCreateTXT()//创建明文{chartemp[80];inti,N;cout<<"请问共要输入几行?";cin>>N;cout<<"请输入文本:"<data=NULL;p->next=NULL;head

5、=p;for(i=0;inext=newLNode;p=p->next;p->data=newchar[strlen(temp)+1];//申请字符串大小的空间(比字符串大1,用于存放字符串结束标识符)strcpy(p->data,temp);p->data[strlen(temp)]='';}p->next=NULL;head=head->next;returnhead;}linklistJAM_TXT(linklis

6、thead)//对明文进行加密{linklistp,head1,q,f;intk;charc;q=newLNode;f=q;cout<<"请输入加密密钥(字母移动长度):";cin>>k;p=head;while(p){q->next=newLNode;q=q->next;q->data=newchar[strlen(p->data)+1];for(inti=0;p->data[i]!='';i++){if(p->data[i]>='A'&&p->data[i]<='Z'){c=p->data[i];c=(c-6

7、5+k)%26+65;q->data[i]=c;}elseif(p->data[i]>='a'&&p->data[i]<='z'){c=p->data[i];c=(c-97+k)%26+65;q->data[i]=c;}elseq->data[i]=p->data[i];}q->data[strlen(p->data)]='';p=p->next;}q->next=NULL;head1=f->next;returnhead1;}linklistJEM_TXT(linklisthead)//对密文进行解密{link

8、listp,head1,q,f;charc,a;charflag='Y';intk;while(flag=='Y'

9、

10、flag=='y'){q=newLNode;f=q;cout<<"请输入解密密钥(字母移动长度)";cin>>k;p=head;while(p){q->next=newLNode;q=q->next;q->data=newcha

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。