课程设计电文加密.docx

上传人:b****4 文档编号:4076532 上传时间:2022-11-27 格式:DOCX 页数:12 大小:68.33KB
下载 相关 举报
课程设计电文加密.docx_第1页
第1页 / 共12页
课程设计电文加密.docx_第2页
第2页 / 共12页
课程设计电文加密.docx_第3页
第3页 / 共12页
课程设计电文加密.docx_第4页
第4页 / 共12页
课程设计电文加密.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

课程设计电文加密.docx

《课程设计电文加密.docx》由会员分享,可在线阅读,更多相关《课程设计电文加密.docx(12页珍藏版)》请在冰豆网上搜索。

课程设计电文加密.docx

课程设计电文加密

数据结构课程设计任务书

学院名称:

数学与计算机学院课程代码:

_________________

专业:

年级:

一、设计题目:

电文的加密问题

二、主要内容

电文(字符串)加密,形成密码文(字符串)的问题。

假定原文为C1C2C3……Cn,加密后产生的密文为S1S2S3……Sn。

首先读入一个正整数Key(大于1)作为加密钥匙并将密文字符位置按顺时针方向连成一个环(双向循环链表)。

加密时从S1位置起顺时针方向计数,当数到第Key个字符位置时将原文中的字符C1放入该密文字符位置,同时从环中除去该字符位置。

接着,从环中下一个字符位置起继续计数,当再次数到第Key个字符位置时,将原文中的C2放入其中同时除去此位置……,类推,直至n个原文字符全部放入密文环中。

由些产生的S1S2S3……Sn即为原文的密文。

三、具体要求及提交的材料

1.做好设计计划,认真查阅相关资料,完成程序设计及调试;

2.按《课程设计说明书_实例模板》完成课程设计说明书的撰写;

3.设计结束后,必须上交如下材料:

(1)《课程设计说明书(报告)》打印稿一份;

(2)课程设计说明书及源代码电子文档

四、主要技术路线提示

认真分析系统功能需求,拟定设计方案和程序框架,查阅相关资料,完成算法设计和程序调试。

五、进度安排

共计两周时间,建议进度安排如下:

1.选题,应该在上机实验之前完成

2.需求分析、方案拟定、程序框架思考可分配4学时

3.详细的程序设计可分配8学时

4.调试和分析可分配8学时。

可以有2学时的机动,即提前完成设计任务的学生可提前安排程序验收和答辩

六、推荐参考资料

1.冯博琴等编著,《软件技术基础》(修改版),西安交通大学出版社,1997

2.严蔚敏等著,《数据结构》,清华大学出版社,2003

3.李芸芳等著,《软件技术基础》(第二版),清华大学出版社,2000

4.徐孝凯等著,《数据结构(C语言描述)》,清华大学出版社,2004

指导教师签名日期年月日

系主任审核日期年月日

摘要………………………………………………………………………………1

1引言……………………………………………………………………………2

2设计方案………………………………………………………………………3

2.1整体方案设计………………………………………………………………3

2.2电文存储……………………………………………………………………4

2.4.构建双向循环链表…………………………………………………………5

2.4电文转换密文………………………………………………………………6

2.5主函数main…………………………………………………………………7

3程序演示………………………………………………………………………8

总结………………………………………………………………………………10

致谢………………………………………………………………………………11

参考文献…………………………………………………………………………12

附录………………………………………………………………………………13

摘要

学习C语言和数据结构的知识,可以让我们对程序设计语言的理解和运用深刻化、时代化。

课程设计是我们从理论走向实践的桥梁,是锻炼我们运用理论知识能力的良机。

随着计算机的普及,社会信息量的与日俱增,信息安全和个人隐私的注重受到越来越多的人的关注,其数量规模比以前任何时候都大,无论个人还是公司乃至整个国家信息安全都显得越来越重要,一旦隐私泄露可能会造成不可估量的损失。

如何使自己的信息更加安全方便快捷也成了人们追求的目标,并且急需这样的软件来完成更多的功能。

针对平时信息处理的重要程度,该软件主要是提供了电文加密的功能,将所发的信息转换成密文,以确保其安全。

关键词:

电文加密,信息安全,隐私

1引言

1.1问题的提出

以前的操作系统等系统软件主要是由汇编语言编写的(包括UNIX操作系统在内)。

由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。

为了提高可读性和可移植性,最好改用高级语言,但一般高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作,例如,对内存地址的操作、位操作等)。

人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。

于是,C语言就在这种情况下应运而生了。

1.2C语言

C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,有时一个使用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。

1.3C语言发展过程

1973年,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

1977年DennisM.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年BrianW.Kernighian和DennisM.Ritchie出版了名著《TheCProgrammingLanguage》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。

1.4任务与分析

电文(字符串)加密,形成密码文(字符串)的问题。

假定原文为C1C2C3……Cn,加密后产生的密文为S1S2S3……Sn。

首先读入一个正整数Key(大于1)作为加密钥匙并将密文字符位置按顺时针方向连成一个环(双向循环链表)。

加密时从S1位置起顺时针方向计数,当数到第Key个字符位置时将原文中的字符C1放入该密文字符位置,同时从环中除去该字符位置。

接着,从环中下一个字符位置起继续计数,当再次数到第Key个字符位置时,将原文中的C2放入其中同时除去此位置……,类推,直至n个原文字符全部放入密文环中。

由些产生的S1S2S3……Sn即为原文的密文。

2设计方案

2.1整体设计方案

此课题是研究电文加密的问题,将明文转换成密文,以实现信息安全。

为了直观和方便,画出流程图如下图1:

图1程序总的流程图

该流程图很直观的描述了整个程序运行过程。

 

2.2电文存储

用户输入的电文和转换后的密文都需要存储;我们就要用相应的程序去实现这个过程,这才是我们最后的目的。

#include

#include

#include

//头文件

typedefstructnode

{

charch;

structnode*forward;/*链接下一节点*/

structnode*backward;/*链接前一节点*/

}CODE;

//定义双链表,用于存储密文

charocode[256];

intkey,num=0;

printf("输入原文字符串:

");

while(num<255&&(ocode[num++]=getchar())!

='\n');

ocode[(num==255)?

num:

num-1]='\0';

//输入电文

ncode=(char*)malloc((length+1)*sizeof(char));

for(i=0;i

{ncode[i]=loop[i].ch;

ncode[length]='\0';

returnncode;}

//定义线性表,用于存储电文

2.3构建双向循环链表

将密文字符位置按顺时针方向连成一个环,用双向循环链表操作存储。

char*decode(char*ocode,intkey)

{

char*ncode;

intlength,count,i;

CODE*loop,*p;

length=strlen(ocode);

loop=(CODE*)malloc(length*sizeof(CODE));

//动态分配密文环

for(i=0;i

{

loop[i].forward=&loop[i+1];

loop[i].backward=&loop[i-1];

}

//构建双链表

loop[0].backward=&loop[length-1];

loop[0].forward=&loop[1];

loop[length-1].forward=&loop[0];

loop[length-1].backward=&loop[length-2];

//双向循环链表

 

2.4电文转换密文

for(p=loop,i=0;i

{

for(count=1;count

p=p->forward;

//从loop[0]位置起顺时针方向计数,数到第Key个字符位置

p->ch=*ocode++;

//将原文中的字符C1放入该密文字符位置

 

p->backward->forward=p->forward;

p->forward->backward=p->backward;

p=p->forward;

//从环中除去该字符位置

}

//产生密文链表

;

 

2.5主函数main

voidmain()

{

charocode[256];

intkey,num=0;

printf("输入电文字符串:

");

while(num<255&&(ocode[num++]=getchar())!

='\n');

ocode[(num==255)?

num:

num-1]='\0';

printf("\n");

do

{

printf("输入加密钥匙Key(大于1整数):

");

scanf("%d",&key);

}while(key<=1);

printf("\n");

printf("电文:

%s\n",ocode);

printf("密文:

%s\n",decode(ocode,key));

printf("\n");

}

 

3.程序演示:

对于所有执行过程,通过图片最好说明问题了:

程序开始如图2所示:

图2

 

输入电文,如图3所示:

图3

 

按下回车键,接着输入关键字,关键字要是大于1的整数,输入错误会继续提示输入,如图4所示:

图4

输入正确的关键字,假设输入23,如图5所示:

图5

如上图所示,电文为:

Iloveyouforever

密文为:

oveoieuofryervl

整个操作过程就是这样,很简单。

 

结论

经过一个多星期的上机实践学习,不断的编写,修改,终于完成了这个电文加密课程设计。

通过实践,我也发现我的好多不足之处,对C语言学习平时只是马马虎虎的过去了,真正自己去解决实际问题的时候才会发现自己学的多么糟糕,通过课程设计对自己的编程能力也有所提高;还有对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。

在这次课程设计中,我学会了很多东西,比如将学到的知识能综合运用到实践中,通过查资料的学习懂得了很多以前不懂的知识,丰富了我的知识面,在能力上也有很大的提高。

课程设计是一个既考验我们对知识掌握及运用能力,又考验我们写实验报告的逻辑组织能力。

因此通过这次课程设计让我受益匪浅。

在完成这次课程设计的的过程中虽然遇到了些问题,但在老师和同学的帮助下最终完成了这次的任务。

致谢

首先我要感谢老师的耐心指导和帮助,在他的督促下按时完成这个课程设计,并且对于我们提出的各种问题都能依依完整而仔细的回答,直到我们完全明白为止。

再者需要感谢的是教我们数据结构的老师,没有他们的教导就不会知道怎样完成这个课程设计,也不可能有基础来完成此次的课程设计。

整个完成的过程中周围的同学也给了不少帮助,在此真的非常感谢每一位给过我帮助的人!

参考文献

1.谭浩强等.C语言程序设计教程.高等教育出版社.2005

2.李建学等.数据结构课程设计案例精编(用C/C++描述).清华大学出版.2007

3.严蔚敏等.数据结构(C语言版).清华大学出版社.2003

4.冯博琴等编著,《软件技术基础》(修改版),西安交通大学出版社,1997

5.李芸芳等著,《软件技术基础》(第二版),清华大学出版社,2000

6.徐孝凯等著,《数据结构(C语言描述)》,清华大学出版社,2004

 

附录

#include

#include

#include

typedefstructnode

{

charch;

structnode*forward;//链接下一节点

structnode*backward;//链接前一节点

}CODE;

char*decode(char*ocode,intkey)

{

char*ncode;

intlength,count,i;

CODE*loop,*p;

length=strlen(ocode);

loop=(CODE*)malloc(length*sizeof(CODE));//动态分配密文环

for(i=0;i

{

loop[i].forward=&loop[i+1];

loop[i].backward=&loop[i-1];//双链表

}

loop[0].backward=&loop[length-1];

loop[0].forward=&loop[1];

loop[length-1].forward=&loop[0];//双向循环链表

loop[length-1].backward=&loop[length-2];

for(p=loop,i=0;i

{

/*产生密文链表*/

for(count=1;count

p=p->forward;//从loop[0]位置起顺时针方向计数,数到第Key个字符位置

p->ch=*ocode++;//将原文中的字符C1放入该密文字符位置

 

p->backward->forward=p->forward;

p->forward->backward=p->backward;

p=p->forward;//从环中除去该字符位置

 

}

ncode=(char*)malloc((length+1)*sizeof(char));//构造线性表存储密文

for(i=0;i

ncode[i]=loop[i].ch;

ncode[length]='\0';

returnncode;

}

 

voidmain()

{

charocode[256];

intkey,num=0;

printf("输入电文字符串:

");

while(num<255&&(ocode[num++]=getchar())!

='\n');

ocode[(num==255)?

num:

num-1]='\0';

printf("\n");

do

{

printf("输入加密钥匙Key(大于1整数):

");

scanf("%d",&key);

}while(key<=1);

printf("\n");

printf("电文:

%s\n",ocode);

printf("密文:

%s\n",decode(ocode,key));

printf("\n");

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1