系统软件实验报告.docx

上传人:b****7 文档编号:16036152 上传时间:2023-07-10 格式:DOCX 页数:23 大小:140.91KB
下载 相关 举报
系统软件实验报告.docx_第1页
第1页 / 共23页
系统软件实验报告.docx_第2页
第2页 / 共23页
系统软件实验报告.docx_第3页
第3页 / 共23页
系统软件实验报告.docx_第4页
第4页 / 共23页
系统软件实验报告.docx_第5页
第5页 / 共23页
系统软件实验报告.docx_第6页
第6页 / 共23页
系统软件实验报告.docx_第7页
第7页 / 共23页
系统软件实验报告.docx_第8页
第8页 / 共23页
系统软件实验报告.docx_第9页
第9页 / 共23页
系统软件实验报告.docx_第10页
第10页 / 共23页
系统软件实验报告.docx_第11页
第11页 / 共23页
系统软件实验报告.docx_第12页
第12页 / 共23页
系统软件实验报告.docx_第13页
第13页 / 共23页
系统软件实验报告.docx_第14页
第14页 / 共23页
系统软件实验报告.docx_第15页
第15页 / 共23页
系统软件实验报告.docx_第16页
第16页 / 共23页
系统软件实验报告.docx_第17页
第17页 / 共23页
系统软件实验报告.docx_第18页
第18页 / 共23页
系统软件实验报告.docx_第19页
第19页 / 共23页
系统软件实验报告.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

系统软件实验报告.docx

《系统软件实验报告.docx》由会员分享,可在线阅读,更多相关《系统软件实验报告.docx(23页珍藏版)》请在冰点文库上搜索。

系统软件实验报告.docx

系统软件实验报告

学生学号

实验课成绩

学生实验报告书

 

实验课程名称

MIS系统软件

开课学院

管理学院

指导教师姓名

学生姓名

学生专业班级

 

2010

--

2011

学年

学期

 

实验项目名称

加密解密算法

实验成绩

实验者

专业班级

组别

同组者

实验日期

2010年11月22日

第一部分:

实验预习报告

1、实验目的、意义

通过简单的加密解密算法的实现理解系统中加密解密的基本思想,熟练掌握使用C语言基本语句。

2、实验基本原理与方法

①单字母替换加密方法——恺撒密码

加密方法是把英文字母按字母表的顺序编号作为明文,将密钥定为m,加密算法为将明文加上密钥m,得到密码表,通过相反的过程由密文得到明文。

②单字母替换加密方法——单表置换密码

由密钥Key构造字符置换表,完成加密和解密过程。

③多字母替换加密方法——维吉利亚密码

假设明文m=m1m2m3…mn;密钥k=k1k2k3…kn,对应密文c=c1c2c3…cn,密文为:

ci=(mi+ki)mod26,26个字母的序号依次为0~25,ci,mi,,ki是分别是密文明文密钥中第i个字母的序号。

④转换加密方法

通过将明文每m个字符一组按顺序分为若干个字符串,再按照先列后行形成密文,并分析给出解密的方法。

或者通过给出一个密钥字符串,将明文按密钥字符串长度按顺序分为若干组字符串,再按照密钥字符串各个字符的顺序形成密文,并分析给出解密的方法。

3、主要仪器设备及耗材

实验室提供计算机和上网条件,C语言上机环境。

4、实验方案与技术路线(综合性、设计性实验)

(1)选定一种加密解密算法,对该算法实现的思路进行分析;

(2)编程实现选定的算法

(3)对所编写的程序进行调试

(4)对程序运行的结果进行截图

(5)对实验结果进行分析

第二部分:

实验过程记录

实验原始记录(包括实验数据记录,实验现象记录,实验过程发现的问题等)

(1)实验数据和文件

(2)程序运行主菜单界面

(3)单字母替换加密

主菜单界面下,选择1,进入单字母替换加密算法,直接由屏幕输入字符,过程如下:

输入字符串“zhuli”,但击回车键,屏幕输出加密后的字符“asfor”(钥为默认值),同时显示出子菜单,进行下一步的选择。

进行解密操作步骤如下:

输入字符串“asfor”,但击回车键,屏幕输出解密后的字符“zhuli”,同时显示出子菜单,进行下一步的选择。

返回主菜单步骤如下:

(4)凯撒加密算法文件操作

在主菜单下,选择选项2,则进入子菜单二,如下图

选择1,进行文件的加密操作,操作步骤如下图:

选择in.txt文件,对其加密,采用凯瑟加密算法,密钥设置为2,加密后的内容写入文件out.txt文件中。

in.txt文件和out.txt文件中的内容如下图所示:

接着选择解密文件,对out.txt文件中的内容进行解密,操作步骤如下:

output.txt文件中的内容如下,与源文件内容相同:

(5)暴力破解文件过程如下

选择子菜单2中的菜单3项,输入要破解的文件名,屏幕显示文件的内容,如下图

 

第三部分结果与讨论(可加页)

实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)

程序设计类实验:

包括原程序、输入数据、运行结果、实验过程发现的问题及解决方法等;

分析与设计、软件工程类实验:

编制分析与设计报告,要求用标准的绘图工具绘制文档中的图表。

系统实施部分要求记录核心处理的方法、技巧或程序段;

其它实验:

记录实验输入数据、处理模型、输出数据及结果分析

(1)源代码

#include

#include

#include

#include

//#include

#defineM100

charencrypt(charch,intn)/*加密函数,把字符向右循环移位n*/

{

while(ch>='A'&&ch<='Z')

{

return('A'+(ch-'A'+n)%26);

}

while(ch>='a'&&ch<='z')

{

return('a'+(ch-'a'+n)%26);

}

returnch;

}

voidexit(intexit_code);

voidsleep(intn)

{

inti=0,j=0;

for(j=0;j<=n;j++)

{

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

i++;

}

}

voidmenu1()/*菜单,1.字母倒排序,2.恺撒密码*/

{

system("CLS");

printf("\n===================信管0804班祝黎========================");

printf("\n1.字母倒排序");

printf("\n2.恺撒密码");

printf("\n3.Quit\n");

printf("=========================================================\n");

printf("Pleaseselectaitem:

");

return;

}

voidmenu()/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*/

{

system("CLS");//clrscr();

printf("\n=========================================================");

printf("\n1.Encryptthefile");

printf("\n2.Decryptthefile");

printf("\n3.Forcedecryptfile");

printf("\n4.Quit\n");

printf("=========================================================\n");

printf("Pleaseselectaitem:

");

return;

}

 

voidmain()

{

inti,n;

charch0,ch1,ch2;

ints,j,a;

charstr1[M]={'0'},str2[M]={'0'};

FILE*in,*out;

charinfile[20],outfile[20];

//textbackground(0);

//textcolor(10);

system("CLS");//clrscr();

sleep(3);/*等待3秒*/

menu1();

ch0=getch();

printf("%c",ch0);

while(ch0!

='3')

{

if(ch0=='1')

{

//system("CLS");//clrscr();

printf("\n");

printf("1.加密\n");

printf("2.解密\n");

printf("3.返回上级菜单\n");

//printf("4.Quit\n");

printf("thewayyouchoose:

");

scanf("%d",&a);

switch(a)

{

case1:

{

printf("请输入要加密的原文\n");

fflush(stdin);

gets(str1);

s=strlen(str1);

for(j=0;j

str2[j]=219-str1[j];

printf("得到密文是:

\n");

puts(str2);

}break;

case2:

{

printf("请输入要解密的密文:

\n");

fflush(stdin);

gets(str1);

s=strlen(str1);

for(j=0;j

str2[j]=219-str1[j];

printf("得到原文:

\n");

puts(str2);

}break;

case3:

{

//menu1();

}break;

default:

printf("输入错误");

}

menu1();

ch0=getch();

}//if(ch0=='1')

if(ch0=='2')

{

system("CLS");//clrscr();

menu();

ch2=getch();

while(ch2!

='4')

{

if(ch2=='1')

{

system("CLS");//clrscr();

printf("\nPleaseinputtheinfile:

");

scanf("%s",infile);/*输入需要加密的文件名*/

if((in=fopen(infile,"r"))==NULL)

{

printf("Cannotopentheinfile!

\n");

printf("Pressanykeytoexit!

\n");

getch();

exit(0);

}

printf("Pleaseinputthekey:

");

scanf("%d",&n);/*输入加密密码*/

printf("Pleaseinputtheoutfile:

");

scanf("%s",outfile);/*输入加密后文件的文件名*/

if((out=fopen(outfile,"w"))==NULL)

{

printf("Cannotopentheoutfile!

\n");

printf("Pressanykeytoexit!

\n");

fclose(in);

getch();

exit(0);

}

while(!

feof(in))/*加密*/

{

fputc(encrypt(fgetc(in),n),out);

}

printf("\nEncryptisover!

\n");

fclose(in);

fclose(out);

sleep

(1);

}//if(ch2=='1')

if(ch2=='2')

{

system("CLS");//clrscr();

printf("\nPleaseinputtheinfile:

");

scanf("%s",infile);/*输入需要解密的文件名*/

if((in=fopen(infile,"r"))==NULL)

{

printf("Cannotopentheinfile!

\n");

printf("Pressanykeytoexit!

\n");

getch();

exit(0);

}

printf("Pleaseinputthekey:

");

scanf("%d",&n);/*输入解密密码(可以为加密时候的密码)*/

n=26-n;

printf("Pleaseinputtheoutfile:

");

scanf("%s",outfile);/*输入解密后文件的文件名*/

if((out=fopen(outfile,"w"))==NULL)

{

printf("Cannotopentheoutfile!

\n");

printf("Pressanykeytoexit!

\n");

fclose(in);

getch();

exit(0);

}

while(!

feof(in))

{

fputc(encrypt(fgetc(in),n),out);

}

printf("\nDecryptisover!

\n");

fclose(in);

fclose(out);

sleep

(1);

}//if(ch2=='2')

if(ch2=='3')

{

system("CLS");//clrscr();

printf("\nPleaseinputtheinfile:

");

scanf("%s",infile);/*输入需要解密的文件名*/

if((in=fopen(infile,"r"))==NULL)

{

printf("Cannotopentheinfile!

\n");

printf("Pressanykeytoexit!

\n");

getch();

exit(0);

}

printf("Pleaseinputtheoutfile:

");

scanf("%s",outfile);/*输入解密后文件的文件名*/

if((out=fopen(outfile,"w"))==NULL)

{

printf("Cannotopentheoutfile!

\n");

printf("Pressanykeytoexit!

\n");

fclose(in);

getch();

exit(0);

}

for(i=1;i<=25;i++)/*暴力破解过程,在察看信息正确后,可以按'Q'或者'q'退出*/

{

rewind(in);

rewind(out);

system("CLS");//clrscr();

printf("==========================================================\n");

printf("Theoutfileis:

\n");

printf("==========================================================\n");

while(!

feof(in))

{

ch1=encrypt(fgetc(in),26-i);

putch(ch1);

fputc(ch1,out);

}

printf("\n========================================================\n");

printf("Thecurrentkeyis:

%d\n",i);/*显示当前破解所用密码*/

printf("Press'Q'toquitandotherkeytocontinue......\n");

printf("==========================================================\n");

ch1=getch();

if(ch1=='q'||ch1=='Q')/*按'Q'或者'q'时退出*/

{

system("CLS");//clrscr();

printf("\nGoodBye!

\n");

fclose(in);

fclose(out);

sleep(3);

exit(0);

}

}

printf("\nForcedecryptisover!

\n");

fclose(in);

fclose(out);

sleep

(1);

}//if(ch2=='3')

menu();

ch2=getch();

}//while(ch2!

='4')

menu1();

ch0=getch();

}//if(ch0=='2')

}//while(ch0!

='3')

system("CLS");//clrscr();

printf("\nGoodBye!

\n");

sleep(3);

}

(2)结论

采用单字母替换加密能够轻易实现字符或文件的加密工作,但同时也容易被破解,要想有更安全的加密,则需选择更加安全的算法。

 

实验报告评语及成绩(请按优,良,中,及格,不及格五级评定)

成绩:

教师签字:

实验项目名称

进程管理实验

实验成绩

实验者

专业班级

组别

同组者

实验日期

2010年11月28日

第一部分:

实验预习报告

1、实验目的、意义

用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。

2、实验基本原理与方法

进程调度算法:

采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。

每个进程有一个进程控制块(PCB)表示。

进程控制块可以包含如下信息:

进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。

进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。

进程的到达时间为进程输入的时间。

每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一就绪进程获得CPU后都只能运行一个时间片。

用已占用CPU时间加1来表示。

进程的运行时间以时间片为单位进行计算。

如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。

每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。

重复以上过程,直到所要进程都完成为止。

3、主要仪器设备及耗材

实验室提供计算机和上网条件,C语言上机环境。

4、实验方案与技术路线(综合性、设计性实验)

第二部分:

实验过程记录

实验原始记录(包括实验数据记录,实验现象记录,实验过程发现的问题等)

(1)输入一个进程号和优先级以及运行时间,如下:

依次执行,执行过程如下:

当运行的时间达到时,进程结束,如下

第三部分结果与讨论(可加页)

实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)

程序设计类实验:

包括源程序、输入数据、运行结果、实验过程发现的问题及解决方法等;

分析与设计、软件工程类实验:

编制分析与设计报告,要求用标准的绘图工具绘制文档中的图表。

系统实施部分要求记录核心处理的方法、技巧或程序段;

其它实验:

记录实验输入数据、处理模型、输出数据及结果分析

(1)源程序

#include

#include

#include

#include

#definegetpch(type)(type*)malloc(sizeof(type))

#defineNULL0

structpcb{/*定义进程控制块PCB*/

charname[10];

charstate;

intsuper;

intntime;

intrtime;

structpcb*link;

}*ready=NULL,*p;

typedefstructpcbPCB;

voidsort()/*建立对进程进行优先级排列函数*/

{

PCB*first,*second;

intinsert=0;

if((ready==NULL)||((p->super)>(ready->super)))/*优先级最大者,插入队首*/

{

p->link=ready;

ready=p;

}

else/*进程比较优先级,插入适当的位置中*/

{

first=ready;

second=first->link;

while(second!

=NULL)

{

if((p->super)>(second->super))/*若插入进程比当前进程优先数大,*/

{/*插入到当前进程前面*/

p->link=second;

first->link=p;

second=NULL;

insert=1;

}

else/*插入进程优先数最低,则插入到队尾*/

{

first=first->link;

second=second->link;

}

}

if(insert==0)first->link=p;

}

}

voidinput()/*建立进程控制块函数*/

{

inti,num;

system("CLS");//clrscr();/*清屏*/

printf("\n请输入进程号:

");

scanf("%d",&num);

for(i=0;i

{

printf("\n进程号No.%d:

\

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2