解读简单的加密文件.docx

上传人:b****8 文档编号:28360695 上传时间:2023-07-10 格式:DOCX 页数:15 大小:162.82KB
下载 相关 举报
解读简单的加密文件.docx_第1页
第1页 / 共15页
解读简单的加密文件.docx_第2页
第2页 / 共15页
解读简单的加密文件.docx_第3页
第3页 / 共15页
解读简单的加密文件.docx_第4页
第4页 / 共15页
解读简单的加密文件.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

解读简单的加密文件.docx

《解读简单的加密文件.docx》由会员分享,可在线阅读,更多相关《解读简单的加密文件.docx(15页珍藏版)》请在冰豆网上搜索。

解读简单的加密文件.docx

解读简单的加密文件

沈阳航空工业学院

课程设计

学号200604021007

班级6402101

姓名张雪颖

指导教师王晓岩

2007年9月18日

沈阳航空工业学院

课程设计任务书

院系:

电子专业:

电子信息工程班级:

6402101

学号:

200604021007题目:

解读简单的加密文件

一、课程设计时间

2007年9月10日至2007年9月14日,共计1周,20学时。

二、课程设计内容

用C语言编写软件完成以下任务:

设一个文件中,前2个字节存储的是“解密码”;后面连续存储了5个浮点型数据(file09.dat,由指导教师提供,参考下图),它们是5个浮点型数据与“解密码”进行位的异或运算的结果数据。

要求用再次利用“解密码”数据,以及“位的异或运算”方法,将文件中的5个浮点型数据恢复成原始数据,并打印到屏幕上。

提示:

①一个整数与另一个整数“异或”运算2次,结果还是原来的整数,即:

若A^K的值为T,则T^K的值必为A。

请参考教材中有关“位运算”的内容。

②利用指针,可以把4个字节的浮点数据理解为由2个整型数据构成的。

三、课程设计要求

1.程序质量:

✧贯彻结构化的程序设计思想。

✧用户界面友好,功能明确,操作方便。

✧用户界面中的菜单至少应包括“显示解密码”、“显示解密之前的浮点数据”、“显示解密之后的浮点数据”、“退出”4项。

✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。

2.课程设计说明书:

课程结束后,上交课程设计说明书和源程序。

课程设计说明书的格式和内容参见提供的模板。

四、指导教师和学生签字

指导教师:

________学生签名:

张雪颖

五、说明书成绩

六、教师评语

 

目录

一、需求分析1

二、程序流程图2

三、核心技术的实现说明及相应程序段7

四、个人总结11

五、参考文献12

六、源程序13

 

一、需求分析

根据对程序设计所给的题目的分析可知,整个程序的设计完成实现大致可分为三个部分,其中每一个部分对应一个函数,他们的功能分别为:

1)读取并显示所给的解密码函数(mima);

2)显示解密码前的符点型数据函数(nowfloat);

3)显示解密码只后的符点型数据函数(oldfload);

在这三个函数当中,每一步都是按照题目所给的要求来实现的.

(一)文件分析:

文件file09.dat一共有22个字节,前2个字节是1个整型数据,后面是有由每4个字节组成的浮点型数据,一共5个浮点型数据。

(二)具体方法:

一个整数与另一个整数“异或”运算2次,结果还是原来的整数。

利用指针,可以把4个字节的浮点数据理解为由2个整型数据构成的。

二、程序流程图

程序总体结构图:

 

三、核心技术的实现说明及相应程序段

(1)如何打开读取文件并显示解密码:

文件共22个字节,解密码为整形,占两个字节.利用fread函数阅读文件file09.dat.如读取解密码可表示为:

if((fp=fopen("d:

\\0009\\file09.dat","rb"))==NULL)

/*打开文件file09.dat*/

{

printf("cannotopenfile\n");

exit(0);/*终止程序*/

printf("jiemima");

printf("\n");

fread(&b,2,1,fp);/*阅读文件*/

(2)如何读取并显示解秘前的五个连续符点型数据:

文件存放的五个连续的符点型数据,每个符点型数据占4个字节,共二十个字节,再次利用fread函数阅读文件file09.dat.读取5个连续的符点型数据,可表示为:

for(i=0;i<5;i++)

{

fread(&s[i],4,1,fp);

printf("%f",s[i]);

printf("\n");

}

(3)如何把5个浮点型数据变成10个整型数据,进行整型与整型之间的“异或”运算。

4个字节5个浮点型数据

图1

2个字节10个整型数据

图2

如图1,2,把一个浮点型数据变成2个整型数据,利用指针先把浮点型数据的地址赋给整型指针变量,表示为:

for(k=0;k<5;k++)

fread(&s[k],4,1,fp);

p=s;/*把浮点型数据的地址赋给整型指针变量*/然后以2个字节为1个整型数据,把它们赋给整型数组变量,共循环10次,可表示为:

for(i=0;i<10;i++)

Y[i]=*p++;/*把整型指针变量指向的内容赋给整型数组变量*/

形成的10个整型数据Y[10]分别与解密码b进行“异或”运算,变成10个新的整型数据z[10],可表示为:

for(l=0,j=0;l<10,j<10;l++,j++)

z[l]=Y[j]^b;/*整型数据与解密码进行异或运算*/

(4)整个程序的收尾完善阶段,最后把10个新的整型数据z[10],每2个合成1个浮点型数据,共5个u[5].

利用指针,把10个新整型数据的地址赋给浮点型指针变量,把浮点型指针变量指向的内容赋给浮点型数组变量,分别输出。

可表示为:

voidman(intw[],intm)

{

float*q,u[5];

inti;

q=w;/*把整型数据的地址赋给浮点型指针变量*/

for(i=0;i

{

u[i]=*q++;/*把浮点型指针变量指向的内容赋给浮点型数组变量*/

}

printf("%f",u[i]);

printf("\n");

}

四、个人总结

为期一周的C语言程序设计结束了,仔细回想一下,在这一周的学习中,收获不少.

通过这次C语言课程设计,使我更进一步了解认识C语言这一门学科,他不仅仅是简单的设计编辑程序,他需要更深度的理论和完整准确的数据作为支撑点,每个程序的编译都要掌握其真正的操作价值,明确他的目的.这是智慧与逻辑的结合,考察我们的思维能力,锻炼我们的实际操作能力.通过这次C语课程设计,使我加深了对C语言的了解,也提高了C语言的应用能力。

这次课程任务设计,主要考察怎样打开并读取所给的文件的内容,如何使用调用函数,怎样对整形数据进行位的异或运算.在我做这次课设之前,对这些程序的运用还是很陌生,不知怎样才能更好的利用,也不理解什么时候该使用,但通过这次课设,经过查找资料,请教老师和同学,终于能够完成这项任务,并且掌握了运用方法,同时还增强了我的动手能力和逻辑思维,使我受益匪浅.

五、参考文献

1谭浩强.C程序设计.北京:

清华大学出版社,2005

2刘成等.C语言程序设计实验指导与习题集.北京:

中国铁道出版社,2006

六、源程序

#include

voidmima()

{

intb;

FILE*fp;/*定义文件型指针变量*/

if((fp=fopen("d:

\\0009\\file09.dat","rb"))==NULL)

/*打开文件file09.dat*/

{

printf("cannotopenfile\n");

exit(0);/*终止程序*/

}

printf("jiemima");

printf("\n");

fread(&b,2,1,fp);/*阅读文件*/

printf("%d",b);/*输出整型数据*/

printf("\n");

fclose(fp);/*关闭文件*/

}

voidnowfloat()

{

inti;

intb;

floats[5];

FILE*fp;

if((fp=fopen("d:

\\0009\\file09.dat","rb"))==NULL)

/*打开文件file09.dat赋给fp*/

{

printf("cannotopenfile\n");

exit(0);

}

printf("mimaqiandefloat");

printf("\n");

fread(&b,2,1,fp);

for(i=0;i<5;i++)

{

fread(&s[i],4,1,fp);

printf("%f",s[i]);

printf("\n");

}

fclose(fp);

}

voidoldfloat()

{

inti,j,l,k;

intb;

intz[10];

intY[10];

int*p;

floats[5];

FILE*fp;

if((fp=fopen("d:

\\0009\\file09.dat","rb"))==NULL)

{

printf("cannotopenfile\n");

exit(0);

}

printf("jiemihoudefloat");

printf("\n");

fread(&b,2,1,fp);

for(k=0;k<5;k++)

fread(&s[k],4,1,fp);

p=s;/*把浮点型数据的地址赋给整型指针变量*/

for(i=0;i<10;i++)

Y[i]=*p++;

/*把整型指针变量指向的内容赋给整型数组变量*/

for(l=0,j=0;l<10,j<10;l++,j++)

z[l]=Y[j]^b;/*整型数据与解密码进行异或运算*/

man(z,10);

fclose(fp);

}

voidman(intw[],intm)

{

float*q,u[5];

inti;

q=w;/*把整型数据的地址赋给浮点型指针变量*/

for(i=0;i

{

u[i]=*q++;

/*把浮点型指针变量指向的内容赋给浮点型数组变量*/

printf("%f",u[i]);

printf("\n");

}

}

main()

{

while

(1)

{

intch;

gotoxy(1,1);/*窗口开始坐标函数*/

window(1,1,99,99);/*窗口结束坐标函数*/

printf("********welcometousejiemima*********\n");

printf(“*-----------zhangxueyingzhizuo----------*\n”);

printf("********************menu********************\n");

printf("*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*\n");

printf("*1>mima2>nowfloat*\n");

printf("*3>oldfloat4>exit(0)*\n");

printf("*---------------------------------------------------------*\n");

printf("Pleaseinputwhichyouwant(1-4):

");

ch=getch();

switch(ch)

{

case'1':

mima();break;

case'2':

nowfloat();break;

case'3':

oldfloat();break;

case'4':

exit(0);

default:

continue;

}

}

}

 

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

当前位置:首页 > 成人教育 > 电大

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

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