课程设计电文加密.docx
- 文档编号:4076532
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:12
- 大小:68.33KB
课程设计电文加密.docx
《课程设计电文加密.docx》由会员分享,可在线阅读,更多相关《课程设计电文加密.docx(12页珍藏版)》请在冰豆网上搜索。
课程设计电文加密
数据结构课程设计任务书
学院名称:
数学与计算机学院课程代码:
_________________
专业:
年级:
一、设计题目:
电文的加密问题
二、主要内容
电文(字符串)加密,形成密码文(字符串)的问题。
假定原文为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"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 电文 加密