C语言课程设计--数据的加密与解密
- 格式:doc
- 大小:214.50 KB
- 文档页数:19
可修改编辑
精品doc
《C语言课程设计》
课程设计报告
题 目 数据的加密与解密
学 号 120802046
姓 名 牛涛
年级专业 2012级电子信息工程专业
指导教师 王元航
完成日期 2012 年 6 月 4 日
安徽师范大学物理与电子信息学院
College of Physics and Electronic Information, Anhui Normal University可修改编辑
精品doc 目录
课程设计任务书…………………………………………………3
摘要………………………………………………………………4
关键词……………………………………………………………4
原理………………………………………………………………4
一.系统功能分析………………………………………………5
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可修改编辑
精品doc 可修改编辑
精品doc 《C 语言程序》课程设计任务书
题目 数据的加密与解密
设计目的 将某一已知文件的内容(仅限于英文字母)以字符形式读出,根据密文(用户从键盘输入)将对应字符进行移位操作即可,解密时移动相反。
例如:加密:设原文为abcdef,密钥为5,则有abcdef每个字母按字母表向后移动5位(注:z后接a)可得到密文(乱码)fghijkl;对该文件解密:文件内容为fghijk1,密钥为5,则有fghijk1每个字母向前移动5位(注a后接z),可得到原文abcdef。
设计进度安排
第一阶段:选择课程设计的题目;
第二阶段:搜寻有关课程设计的资料,查阅相关的书籍;
第三阶段:开始编辑C语言程序;
第四阶段:完成了C训言程序的编写,开始撰写C语言菾程设计报告;
第五阶段:完成了C语言课程设计报告的撰写。
教师审核签名 可修改编辑
精品doc 摘要:
作为保障数据数据安全的一种方式,对于信息的加密技巧起源于欧洲,最广为人知的编码机器是德国的German Enigma,在第二次世界大战中德国人利用它创建了加密信息系统,从而解决军事信息的保密通讯问题。
尽管加密技术被首先使用在军事通信领域,但是人们或许出于安全的考虑,开始逐渐对于商业机密、政府文件等重要信息实施加密手段。数据加密应运而生。其基本原理是:
对明文(可读懂的信息)进行翻译,使用不同的算法对明文以代码形式(密码)实施加密。该过程的逆过程称为解密,即将该编码信息转化为明文的过程。
从事数据加密研究的人称为密码编码者(Cryptographer),而从事对数据解密的专业人士称为密码分析者(Cryptanalyst)。如今数据加密技术被广泛地应用与国民经济各个领域,特别是政府机关和国防情报部门,此外才是科学研究机关、商业部门、新闻出版、金融证券、交通管制与电力输送等部门。
而C语言程序设计教学不仅仅局限于使学生单纯地了解和掌握C语言的基本语法规范,而是要致力于培养学生运用C语言解决实际问题的编程能力。C语言程序设计教学方法的改革让学生从多角度、以多方式去了解和掌握C语言以及程序设计的精髓,着重培养学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力。
关键词:C语言,程序设计,换位法,换位位数,数据加密与解密
原理:
换位法加密的原理是将英文句子中的空格
去除,然后将句子排成若干 行,每行的字符
数为换位位数,再按列输出即为密文,不足
部分填入随机字母。;例如英文can you come here
若换位位数取4,则密文为comraueench*yoe*,
*代表随机字母,如右图所示: c a n y
o u c o
m e h e
r e * * 输入方向
输出方向
换位法示意图 可修改编辑
精品doc 一、系统功能分析
1.1 设计目的
本课程设计的目的是为了保证个人数据资料不被他人非法窃取使用,保护个人的隐私及重要文件。
1.2 功能描述
本程序主要是对已知文件(为英文字符)通过一定的算法将其转换成非本身的其他英文字母以达到文件加密的目的。整个系统由以下几大功能模块组成。
1.主控选择模块
此模块是主程序操作界面,供用户进行选择。用户可选择执行加密或解密操作。
2.加密模块
此模块执行加密操作,输入明文后,去除空格得s1,再判断有没有缺空格,有就补随机字母,然后按照换位位数进行加密,从而得到密文。
3.解密模块
解密模块是完成对文件的解密工作,将密文转换为可被识别的明文。从外部文件中读入任意一个文件并将它解密并显示出来。
本次综合训练是计算机科学与技术、信息管理与信息系统、软件工程专业重要的实践性环节之一,是在学生学习完《C语言程序设计》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务是:
1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握;
2. 掌握C语言编程和程序调试的基本技能;
3. 利用C语言进行基本的软件设计;
4. 掌握书写程序设计说明文档的能力;
5. 提高运用C语言、数据结构解决实际问题的能力。 可修改编辑
精品doc 开始 二、C 语言源程序编写:
2.1 程序结构图:
主函数
2.2 程序流程图 调用 返回
char *jiami(char *p,char *s1,int key)
char *jiemi(char *p,char *s2,int key)
#include
#include
#define CHANGDU 1000
int main( )
char s1[CHANGDU];
char s2[CHANGDU];
char xstr[CHANGDU];
gets(s2)
判断字符串s2中的
空格和字符串结尾
接下页 可修改编辑
精品doc 去除空格,s2 赋给 s1 if(s1[0]>='A'&&
s1[0] <='Z')
s1[0]=s1[0]+32
scanf("%d",&key);即加密字节数
函数调用jiami(xstr,s1,key);
解密字节数,函数调用
if(jiemi(s1,xstr,key)!=NULL)
函数定义
char*jiami(char *p,char *s1,int key) 函数定义
char*jiemi(char *p,char *s2,int key)
int i,j,len,len1,n=0;计算字符串s1的长度
len=strlen(s1); int i,j,len,n=0;
len=strlen(s2);
if((len % key)!=0)
len1=len+key-(len %
key);
else len1=len; if((len % key)!=0)
return NULL;
对不足的产生随机字母 for(i=0;i
for(j=0;j
{
p[n++]=s2[j*len+i];
}
接下页 接上页 可修改编辑
精品doc
2.3程序源代码:
#include
#include
#define CHANGDU 1000
int main( )
{
char *jiami(char *p,char *s1,int key);
char *jiemi(char *p,char *s2,int key);
int key,i,j,len;
char s1[CHANGDU];for(j=0;j
for(i=0;i<(len1/key);i++)
p[n++]=s1[i*key+j];
返回p 返回p 接上页
输出结果
结束 可修改编辑
精品doc char s2[CHANGDU];
char xstr[CHANGDU];
printf("
*****************************\n");
printf(" * welcome to use the
system! *\n");
printf("
*****************************\n");
printf("qing shu ru yuan shi ming wen:");
gets(s2);
{
int m=0,i=0,t;
char ch;
t=strlen(s2);
for(i=0;i
if(s2[i]!=' '&&s2[i]!='\0')
{
ch=s2[i];
s1[m]=ch;