安全编程实验报告.docx
- 文档编号:3481311
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:198.42KB
安全编程实验报告.docx
《安全编程实验报告.docx》由会员分享,可在线阅读,更多相关《安全编程实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
安全编程实验报告
安全编程技术实验报告
学生姓名
学生学号
指导教师
郭克华
专业班级
信息安全
完成日期
计算机科学与技术系
信息科学与工程学院
实验一
一、目的与要求
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入门教程(来自网络)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安全 编程 实验 报告