《C语言课程设计》课程设计数据的加密与解密

上传人:仙*** 文档编号:26933715 上传时间:2021-08-14 格式:DOC 页数:15 大小:186.01KB
返回 下载 相关 举报
《C语言课程设计》课程设计数据的加密与解密_第1页
第1页 / 共15页
《C语言课程设计》课程设计数据的加密与解密_第2页
第2页 / 共15页
《C语言课程设计》课程设计数据的加密与解密_第3页
第3页 / 共15页
点击查看更多>>
资源描述
C语言课程设计课程设计报告题 目数据的加密与解密学 号*姓 名*年级专业2010级通信工程指导教师完成日期2011年6月17日安徽师范大学物理与电子信息学院College of Physics and Electronic Information, Anhui Normal University目录目录1课程设计任务书2摘要3关键词3原理31. 系统功能分析41.1 设计目的41.2 功能描述42. C语言程序编写52.1程序结构图52.2程序流程图52.3 具体程序源代码83. C语言程序功能示例114. 设计总结125. 参考文献13C语言程序课程设计任务书题 目数据的加密与解密设计目的将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密钥(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。例如:加密:设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向后移动5位(注:z后接a)可得到密文(乱码)fghijkl;对该文件解密:文件内容为fghijk1,密钥为5,则有fghijk1每个字母向前移动5位(注a后接z),可得到原文abcdef。设计进度安排第一阶段:选择课程设计的题目第二阶段:搜寻有关课程设计的资料,查阅相关的书籍第三阶段:开始编冉C语言程序第四阶段:完成了C训言程序的编写,开始撰写C语言菾程设计报告第五阶段:完成了C语言课程设计报告的撰写教师审核签名摘要 随着现代化的发展,人们的数据需要更笀便、安全和可靠的加密管理模式。设计一个基于C语言的数据加密及解密软件,可以方便对数据的加密与解密。本设计实现了数据的加密及密,运行软件之后只需输入英文句子倎,再输入换位位数(密钥),即可输出密文,也即对该数据进行加密;输入密文后再输入换位位数则可输出明文,即解密操作。朄设计的加密解密系统,运用了C语言程序设计的知识,具有对英文文本加密和解密的功能,并在此基础上可进行对文件的操作。 关键词 C语言;程序设计;换位法换位位数数据加密与解密;原理输入方向输出方向canyoucomehereab换位法加密示意换位法加密的原理是将英文句子中的空格去除,然后将句子排成若干行,每行的字符数为换位位数,再按列输出即为密文,不足部分填入随机字母。例如英文Can you come here若换位位数取4,则密文为comraueenchayoeb,如右图所示。一、系统功能分析1.1设计目的 本课程设计的目的是为了保证个人数据资料不被他人非法窃取使用,保护个人的隐私及重要文件!1.2功能描述本程序主要是对已知文件(为英文字符)通过一定的算法将其转换成非本身的其他英文字母以达到文件加密的目的。整个系统由以下几大功能模块组成。1.2.1主控选择模块此模块是主程序操作界面,供用户进行选择。用户可选择执行加密或解密操作。1.2.2加密模块加密模块主要是完成对文件的加密操作。从外部文件中读入任意一个文件并将它加密并显示出来!1.2.3解密模块解密模块是完成对文件的解密工作,将密文转换为可被识别的明文。从外部文件中读入任意一个文件并将它解密并显示出来!本综合训练是计算机科学与技术、信息管理与信息系统、软件工程专业重要的实践性环节之一,是在学生学习完C语言程序设计 数据结构课程后进行的一次全面的综合练习。本课综合训练的目的和任务:1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握;2. 掌握C语言编程和程序调试的基本技能;3. 利用C语言进行基本的软件设计;4. 掌握书写程序设计说明文档的能力;5. 提高运用C语言、数据结构解决实际问题的能力。 二、C语言源程序编写:2.1程序结构图: 主 函 数返回调用char *encode (char *dest,char *s1,int key)char *decode(char *dest,char *str,int key)2.2程序流程图int main()#include#include#include#define CODELEN 256 开始 判断字符串str中的空格和字符串结尾gets(str)char s1CODELENchar strCODELENchar xstrCODELENif(s10=A&s10=Z)s10=s10+32去除空格,str变成s1函数调用if(decode(s1,xstr,key)!=NULL)scanf(%d,&key);即加密字节数函数调用encode(xstr,s1,key);函数定义char*decode(char *dest,char *str,int key)函数定义char*encode(char *dest,char *s1,int key)int i,j,len,n=0;len=strlen(str);int i,j,len,len2,n=0;计算字符串s1的长度len=strlen(s1);if(len% key)!=0if(len % key)!=0) len2=len+key-(len % key);else len2=len;return NULL;len2=len;for(i=0;ilen;i+)for(j=0;jkey;j+)destn+=strj*len+i;for(j=0;jkey;j+)for(i=0;i(len2/key);i+)destn+=s1i*key+j;种子srand(time(NULL)返回destreturn destdestn=0;return dest 显示 结果 结束2.3、具体程序源代码如下:#include#include#include#define CODELEN 256 char *encode(char *dest,char *s1,int key)int i,j,len,len2,n=0;len=strlen(s1); if(len % key)!=0) len2=len+key-(len % key);else len2=len;(timesrand(NULL); for(i=len;ilen2;i+) s1i=(char)(rand() % 26)+(rand() % 1)*(A-a)+a); s1len2=0; for(j=0;jkey;j+) for(i=0;i(len2/key);i+) destn+=s1i*key+j; destn=0; return dest; char *decode(char *dest,char *str,int key)int i,j,len,n=0;len=strlen(str);if(len % key)!=0) return NULL;len=(len / key);for(i=0;ilen;i+)for(j=0;jkey;j+) destn+=strj*len+i; destn=0; return dest; int main()int key,i,j,len;char s1CODELEN;char strCODELEN;char xstrCODELEN;printf(Please enter a string:);gets(str); int m=0,i=0,t;char ch;t=strlen(str);for(i=0;i=A&s10=Z)s10=s10+32; puts(s1); printf(Please enter a digit:); scanf(%d,&key); encode(xstr,s1,key);printf(“The mi wen is:”); printf(%sn,xstr); if(decode(s1,xstr,key)!=NULL); elseprintf(NULL);int a;char s2CODELEN;printf(Please enter again a digit:);scanf(%d,&a);getchar();printf(Please enter again a string:);gets(s2); if(a=key&s20=s10)printf(“The ming wen is:”);puts(str);printf(“*”);printf(“*”);三、C语言程序功能示例:操作过程中的截图:测试数据: Please enter a string:Nice to meet you Please enter a digit:4; The mi wen is:nteuiotacmyfeeok Please enter again a digit:4 Please enter again a string: Nice to meet you * Please enter a string:Well down boby Please enter a digit:4; The mi wen is:wdbeoolwblny Please enter again a digit:4 Please enter again a string: Well down boby *四、设计总结通过这次课程设计,我学到了许多东西,在完成设计的过程中也遇到了许多的问题,通过不断的查资料,和向老师同学的请教,使得大部分问题得到了解决。并且解决问题的过程中我也学到了很多东西。在设计过程中,主要遇到的问题就是文件的操作问题,以前学习的时候,对文件的操作掌握的不是很好,但在做课程设计时会常常用到,经认真看书后解决了这个问题。还有就是对读取文本文件中的内容不停止(一直读下去)的问题。首先是密码的存储识别,后用fgetc(fp)!=EOF函数解决,使得读函数不会无限读下去,读完后停止并还回文本内容;其次是密码太多时会出现乱码的问题,后用while()函数解决。虽然在课程设计过程中修改了很多次,但程序还是很不完美,有一些问题未能解决。比如说程序的界面不够美观,不够人性化;在对密码的处理上也不甚太好,可能存在安全隐患。我将在以后的时间里继续努力,不断充实自己。附软件说明:本程序采用宏定义方式定义字符串的大小,增加了程序的通用性,本程序基本实现了要求的内容:1.采用换位法进行加密和解密;2.输入英文句子后,再输入换位位数(密钥),即可输出密文;3.输入密文后再输入换位位数则可输出明文;数据的加密与解密的使用方法: 1.加密使用方法: 首先输入一个加密字符串(即明文),然后再输入加密字数(即密钥),即可显示结果(密文)。 2.解密使用方法: 首先输入解密字节数(密钥),然后再输入密文,即可显示结果(即明文)。五、参考文献1. 谭浩强 C语言程序设计(第二版).高等教育出版社,20022 黄维通 C语言程序设计 清华大学出版社3 徐士良等. C语言常用算法程序集 清华大学出版社4. 马靖善等. C语言程序设计.清华大学出版社,20055. 张毅坤等. C语言程序设计教程M .西安交通大学出版社,2003物理与电子信息学院课程设计评定意见指导教师评语主要内容包括:设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。成绩: 签名: 年 月 日注:本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订14
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!