C语言课程设计数据的加密与解密杭世龙文档格式.docx
《C语言课程设计数据的加密与解密杭世龙文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计数据的加密与解密杭世龙文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
1.1设计目的……………………………………………………..5
1.2功能描述……………………………………………………..5
二.C语言程序编写……………………………………………6
2.1程序结构图…………………………………………………..6
2.2程序流程图…………………………………………………..6
2.3程序源代码…………………………………………………..8
三.程序功能示例………………………………………………13
3.1示例截图……………………………………………………..13
3.2测试过程……………………………………………………..16
四.设计体会与收获……………………………………………16
五.参考文献……………………………………………………16
《C语言程序》课程设计任务书
题目
设计目的
将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密文(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
例如:
加密:
设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向后移动5位(注:
z后接a)可得到密文(乱码)fghijkl;
对该文件解密:
文件内容为fghijk1,密钥为5,则有fghijk1每个字母向前移动5位(注a后接z),可得到原文abcdef。
设计进度安排
第一阶段:
选择课程设计的题目;
第二阶段:
搜寻有关课程设计的资料,查阅相关的书籍;
第三阶段:
开始编辑C语言程序;
第四阶段:
完成了C训言程序的编写,开始撰写C语言菾程设计报告;
第五阶段:
完成了C语言课程设计报告的撰写。
教师审核签名
摘要:
作为保障数据数据安全的一种方式,对于信息的加密技巧起源于欧洲,最广为人知的编码机器是德国的GermanEnigma,在第二次世界大战中德国人利用它创建了加密信息系统,从而解决军事信息的保密通讯问题。
尽管加密技术被首先使用在军事通信领域,但是人们或许出于安全的考虑,开始逐渐对于商业机密、政府文件等重要信息实施加密手段。
数据加密应运而生。
其基本原理是:
对明文(可读懂的信息)进行翻译,使用不同的算法对明文以代码形式(密码)实施加密。
该过程的逆过程称为解密,即将该编码信息转化为明文的过程。
从事数据加密研究的人称为密码编码者(Cryptographer),而从事对数据解密的专业人士称为密码分析者(Cryptanalyst)。
如今数据加密技术被广泛地应用与国民经济各个领域,特别是政府机关和国防情报部门,此外才是科学研究机关、商业部门、新闻出版、金融证券、交通管制与电力输送等部门。
而C语言程序设计教学不仅仅局限于使学生单纯地了解和掌握C语言的基本语法规范,而是要致力于培养学生运用C语言解决实际问题的编程能力。
C语言程序设计教学方法的改革让学生从多角度、以多方式去了解和掌握C语言以及程序设计的精髓,着重培养学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力。
关键词:
C语言,程序设计,换位法,换位位数,数据加密与解密
原理:
输入方向
换位法加密的原理是将英文句子中的空格
去除,然后将句子排成若干行,每行的字符
c
a
n
y
o
u
m
e
h
r
*
输出方向
数为换位位数,再按列输出即为密文,不足
部分填入随机字母。
;
例如英文canyoucomehere
若换位位数取4,则密文为comraueench*yoe*,
*代表随机字母,如右图所示:
换位法示意图
一、系统功能分析
1.1设计目的
本课程设计的目的是为了保证个人数据资料不被他人非法窃取使用,保护个人的隐私及重要文件。
1.2功能描述
本程序主要是对已知文件(为英文字符)通过一定的算法将其转换成非本身的其他英文字母以达到文件加密的目的。
整个系统由以下几大功能模块组成。
1.主控选择模块
此模块是主程序操作界面,供用户进行选择。
用户可选择执行加密或解密操作。
2.加密模块
此模块执行加密操作,输入明文后,去除空格得s1,再判断有没有缺空格,有就补随机字母,然后按照换位位数进行加密,从而得到密文。
3.解密模块
解密模块是完成对文件的解密工作,将密文转换为可被识别的明文。
从外部文件中读入任意一个文件并将它解密并显示出来。
本次综合训练是计算机科学与技术、信息管理与信息系统、软件工程专业重要的实践性环节之一,是在学生学习完《C语言程序设计》、《数据结构》课程后进行的一次全面的综合练习。
本课综合训练的目的和任务是:
1.巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握;
2.掌握C语言编程和程序调试的基本技能;
3.利用C语言进行基本的软件设计;
4.掌握书写程序设计说明文档的能力;
5.提高运用C语言、数据结构解决实际问题的能力。
二、C语言源程序编写:
1程序结构图:
主函数
char*jiami(char*p,char*s1,intkey)
char*jiemi(char*p,char*s2,intkey)
返回
调用
2程序流程图
接下页
chars1[CHANGDU];
chars2[CHANGDU];
charxstr[CHANGDU];
intmain()
#include<
stdio.h>
string.h>
#defineCHANGDU1000
接上页
for(i=0;
i<
len;
i++)
for(j=0;
j<
key;
j++)
{
p[n++]=s2[j*len+i];
}
对不足的产生随机字母
returnNULL;
inti,j,len,n=0;
len=strlen(s2);
inti,j,len,len1,n=0;
计算字符串s1的长度
len=strlen(s1);
函数定义
char*jiemi(char*p,char*s2,intkey)
char*jiami(char*p,char*s1,intkey)
解密字节数,函数调用
if(jiemi(s1,xstr,key)!
=NULL)
scanf("
%d"
&
key);
即加密字节数
函数调用jiami(xstr,s1,key);
去除空格,s2赋给s1
返回p
(len1/key);
p[n++]=s1[i*key+j];
3所有的课题程序源代码:
{
char*jiami(char*p,char*s1,intkey);
char*jiemi(char*p,char*s2,intkey);
intkey,i,j,len;
chars1[CHANGDU];
chars2[CHANGDU];
charxstr[CHANGDU];
printf("
*****************************\n"
);
*welcometousethesystem!
*\n"
qingshuruyuanshimingwen:
"
gets(s2);
{
intm=0,i=0,t;
charch;
t=strlen(s2);
for(i=0;
t;
if(s2[i]!
='
'
&
s2[i]!
\0'
)
ch=s2[i];
s1[m]=ch;
m=m+1;
}
if(s1[0]>
A'
s1[0]<
Z'
s1[0]=s1[0]+32;
puts(s1);
qingshurujiamimiyao:
scanf("
key);
jiami(xstr,s1,key);
jiamimiwenshi:
%s\n"
xstr);
if(jiemi(s1,xstr,key)!
{;
else
NULL"
inta;
charstr[CHANGDU];
**********************************************\n"
qingshurujiemimiyao:
a);
getchar();
qingshurujiamimiwen:
gets(str);
if(a==key&
str[0]==s1[0])
jiemimingwenshi:
puts(s2);
inti,j,len,len1,n=0;
len=strlen(s1);
if((len%key)!
=0)
len1=len+key-(len%key);
len1=len;
for(i=len;
len1;
s1[i]=(char)((rand()%26)+(rand()%1)*('
-'
a'
)+'
s1[len1]=0;
for(j=0;
p[n++]=s1[i*key+j];
p[n]=0;
returnp;
inti,j,len,n=0;
len=strlen(s2);
returnNULL;
len=(len/key);
我负责编写的主程序源代码:
三.程序功能示例
3.1示例截图:
3.2测试过程:
(以第一幅截图举例)
(1)qingshuruyuanshimingwen:
Canyoucomehere?
canyoucomehere?
4
comraueenchi?
yoea
******************************************
Canyoucomehere?
(2)qingshuruyuanshimingwen:
Canyoucomehere
11
cearrney?
oiuackoymietht
cearrney?
四.设计体会与收获
该程序是我与牛涛,刘磊同学一起完成的,刘磊负责解密函数的编写,我负责加密函数的编写,牛涛负责编写主函数,然后三个人在加以整合、更改,得到以上程序。
在编写主函数是遇到了一些问题,例如,在对待字符数组的处理问题上,遇到了些问题,但经过查阅书籍,最终得以解决,感受颇多。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,终于游逆而解。
同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!
五.参考文献
《C语言程序设计》谭浩强版
C语言程序设计清华大学出版社郭有强
《C语言程序设计习题与实验设计指导》电子科技大学出版社,编者孙淑霞,周家纪,丁照宇。
《标准C语言基础教程(第四版)》编者GaryJ.Bronson
物理与电子信息学院课程设计评定意见
指导教师评语
主要内容包括:
设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。
成绩:
签名:
年 月 日
注:
本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订