安全编程实验报告.docx

上传人:b****6 文档编号:3481311 上传时间:2022-11-23 格式:DOCX 页数:14 大小:198.42KB
下载 相关 举报
安全编程实验报告.docx_第1页
第1页 / 共14页
安全编程实验报告.docx_第2页
第2页 / 共14页
安全编程实验报告.docx_第3页
第3页 / 共14页
安全编程实验报告.docx_第4页
第4页 / 共14页
安全编程实验报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

安全编程实验报告.docx

《安全编程实验报告.docx》由会员分享,可在线阅读,更多相关《安全编程实验报告.docx(14页珍藏版)》请在冰豆网上搜索。

安全编程实验报告.docx

安全编程实验报告

安全编程技术实验报告

 

学生姓名

学生学号

指导教师

郭克华

专业班级

信息安全

完成日期

 

计算机科学与技术系

信息科学与工程学院

 

实验一

一、目的与要求

1.1实验目的

●掌握安全编程技术的基本思路和方法。

●利用所学的基本知识和技能,解决简单的安全编程问题。

1.2实验要求

利用所学到的编程知识和编程技巧,设计一个实际的应用软件,提高进行工程设计的基本技能及分析、解决实际问题的能力,为后续课程和以后的工程实践打下良好的基础。

1.3实验内容

(1)使用某种方法处理一个视频或者音频,使得该视频或音频用任何常用播放软件都无法播放;

(2)自己编写一个播放软件,用你的播放软件可以播放该视频或音频;

(3)该播放软件使用次数为5次,打开5次之后,再也无法使用。

2、操作环境

使用Eclipse软件,用java语言编写的程序。

3、实验内容

实验内容的实现包括以下几个部分:

界面与播放器的设置;实现退出、打开、加密和解密四项功能的具体代码;实现软件使用次数为五次的功能的具体代码。

界面与播放器的设置非常简单且繁琐,我采用的是全部设定成固定值的方法设置的界面与播放器的方法,最终效果可以参考实验数据部分。

播放器的设置基本都是调用了JMF的API里本身有的方法,比如:

//?

?

player?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

//?

?

?

?

?

?

?

?

?

?

?

?

?

Frame?

?

?

if((visual=player.getVisualComponent())!

=null){

Dimensionsize=visual.getPreferredSize();

videoWidth=size.width;

videoHeight=size.height;

visual.setBounds(0,0,videoWidth,videoHeight);

this.add(visual);

}else{

videoWidth=320;

}

//?

?

player?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

Frame?

?

?

if((control=player.getControlPanelComponent())!

=null){

controlHeight=control.getPreferredSize().height;

control.setBounds(0,videoHeight,videoWidth,controlHeight+insetHeight);

this.add(control);

}

//?

?

Frame?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

this.setSize(videoWidth+insetWidth,videoHeight+controlHeight+insetHeight);

this.validate();

//?

?

?

?

?

?

?

?

?

?

?

?

player.start();

}elseif(ceinstanceofEndOfMediaEvent){

//?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

player.setMediaTime(newTime(0));

player.start();

退出、打开和选择三项功能也是直接调用已有的方法完成。

加密和解密采用的是取反的方法,考虑到可逆性。

还可以改成加一减一的方法,更高级的可以考虑加入密码算法进行加密,更加安全。

加解密的时候都会建立新的文件存放数据,加解密过程完成后新的文件都会被删除。

加解密都是读写文件的过程所以比较慢,现在考虑到的优化方法是解密到一半的时候直接开始播放,同时后台继续解密后面的文件,可以提高效率,增加可用性。

解密的实现如下(打开时也要解密):

inttempbyte;

inti=0;

while((tempbyte=in.read())!

=-1){

if(i==0){

if(tempbyte==5){

jl.setText("?

?

?

?

");

on.close();

on2.close();

file1.delete();

file2.delete();

return;

}

on2.write(~tempbyte);

i++;

continue;

}elseif(i<3){

on.write(~tempbyte);

on2.write(tempbyte);

i++;

continue;

}else{

on.write(tempbyte);

on2.write(tempbyte);

i++;

continue;

}

加密的实现如下:

in=newFileInputStream(file);

on=newFileOutputStream(new_file,true);

inttempbyte;

inti=0;

on.write(0);

while((tempbyte=in.read())!

=-1){

if(i<2){

on.write(~tempbyte);

i++;

continue;

}else{

on.write(tempbyte);

i++;

continue;

}

限制软件打开五次的功能是用文件实现的,在主函数里创建一个文件并且写入初始值5,之后每一次进行打开操作都将文件里的数进行减一的操作。

当文件里数的值为零时,再次打开,程序会直接退出并且在控制台上打印“超过使用次数!

”信息。

Filefile=newFile("C:

\\Users\\a\\Desktop","count.txt");

if(!

file.exists()){

file.createNewFile();

Strings="5";

FileWriterfw=newFileWriter("C:

/Users/a/Desktop/count.txt");

BufferedWriterbw=newBufferedWriter(fw);

bw.write(s,0,s.length());

bw.flush();

bw.close();

}

Filemyfile=newFile("C:

/Users/a/Desktop/count.txt");

BufferedReaderbr;

try{

br=newBufferedReader(newFileReader(myfile));

Stringtemp=br.readLine();

intcount=Integer.parseInt(temp);

if(count>0){

count-=1;

Stringa=String.valueOf(count);

FileWriterfw=newFileWriter("C:

/Users/a/Desktop/count.txt");

BufferedWriterbw=newBufferedWriter(fw);

bw.write(a,0,a.length());

bw.flush();

bw.close();

}

else{

System.out.println("?

?

?

?

?

?

!

");

System.exit(0);

}

}catch(FileNotFoundExceptione3){

e3.printStackTrace();

}catch(IOExceptione1){

e1.printStackTrace();

}

四、实验数据

首先,在未经任何处理的情况下,实验所用到的本avi格式视频是可以被普通的播放器随意打开的。

图1用potplayer播放器打开视频

运行程序,将视频加密。

图2加密视频

图3加密完成

可见,加密后的视频不能再用potplayer打开了。

图4打开时出现错误

用该程序打开视频:

图5打开操作

打开时,软件自动解密已加密过的视频。

图6打开时的解密

解密完成后自动播放视频。

图7播放器界面

解密功能的使用。

图8解密

图9解密完成

解密完成后,又可以用potplayer再次打开该视频了。

图10可再次打开的视频文件

打开五次后,会自动退出并显示“超过使用次数!

”的提示。

图11运行程序后会在桌面自动生成count.txt文件

图12初始显示为5

图13进行过一次打开操作后,文件里的数减一

图14文件中的数减为0了

图15再次打开后,程序退出并在控制台显示信息

实验总结

这个是在刚刚接触安全编程技术时编写的,其实不是个非常复杂的程序,但是正是通过这个程序,我开始接触有关安全编程技术方面的编程。

实验的内容是编写一个可以处理视频(也就是加密解密)的视频播放器,看到这个题目的时候我就决定使用Java来完成这个试验了,因为据我所知,JMF可以十分方便的实现视频播放器功能。

编写得有些艰难,因为之前没接触过JMF方面的内容,但是在老师和同学的帮助下我还是很快完成了本次实验。

JMF这个框架十分方便,用它来实现多媒体方面的编程是非常快的,它提供了相当多的接口而隐藏了一些具体实现,这样就可以不受平台限制的呈现基媒体,因为开发者使用的时候不用考虑到本地方法。

关于运行五次就关闭的功能,一开始我想得比较复杂,后来在同学的提示下,想到可以用读写文件的方式来控制软件打开次数。

当然,这是个比较粗糙的方法,还有时间的话我会继续改进。

通过这次实验,我发现了自身的不足,比如没有很好的书写习惯,考虑问题不周到,对于面相对象的理解不够深入等。

但在编程的过程中我体验到了一分耕耘一分收获的喜悦;多次调试后程序成功运行了,那时候的欢乐是我以前无法想象的。

果然,学习任何一门课程,只要学得用心,都可以从中体会到学习的快乐。

今后我的进步,想必都是从这一点一点敲入编译器的代码中获得的。

参考资料

1.Java语言程序设计(郭克华著)

2.JMF入门教程(来自网络)

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

当前位置:首页 > 小学教育 > 语文

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

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