1、安全编程实验报告安全编程技术实验报告学生姓名学生学号指导教师郭克华专业班级信息安全完成日期计算机科学与技术系信息科学与工程学院实验一一、目的与要求1.1 实验目的 掌握安全编程技术的基本思路和方法。 利用所学的基本知识和技能,解决简单的安全编程问题。1.2 实验要求利用所学到的编程知识和编程技巧,设计一个实际的应用软件,提高进行工程设计的基本技能及分析、解决实际问题的能力,为后续课程和以后的工程实践打下良好的基础。1.3 实验内容(1)使用某种方法处理一个视频或者音频,使得该视频或音频用任何常用播放软件都无法播放;(2)自己编写一个播放软件,用你的播放软件可以播放该视频或音频;(3)该播放软件
2、使用次数为5次,打开5次之后,再也无法使用。2、操作环境使用Eclipse软件,用java语言编写的程序。3、实验内容实验内容的实现包括以下几个部分:界面与播放器的设置;实现退出、打开、加密和解密四项功能的具体代码;实现软件使用次数为五次的功能的具体代码。界面与播放器的设置非常简单且繁琐,我采用的是全部设定成固定值的方法设置的界面与播放器的方法,最终效果可以参考实验数据部分。播放器的设置基本都是调用了JMF的API里本身有的方法,比如: /?player?,? /?Frame?, if (visual = player.getVisualComponent() != null) Dimensi
3、on size = 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().hei
4、ght; control.setBounds(0, videoHeight, videoWidth, controlHeight + insetHeight); this.add(control); /?Frame?,? this.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight); this.validate(); /? player.start(); else if (ce instanceof EndOfMediaEvent) /?,?,? player.setMediaTime(new
5、Time(0); player.start(); 退出、打开和选择三项功能也是直接调用已有的方法完成。加密和解密采用的是取反的方法,考虑到可逆性。还可以改成加一减一的方法,更高级的可以考虑加入密码算法进行加密,更加安全。加解密的时候都会建立新的文件存放数据,加解密过程完成后新的文件都会被删除。加解密都是读写文件的过程所以比较慢,现在考虑到的优化方法是解密到一半的时候直接开始播放,同时后台继续解密后面的文件,可以提高效率,增加可用性。解密的实现如下(打开时也要解密):int tempbyte;int i=0;while (tempbyte = in.read() != -1) if(i = 0)
6、if(tempbyte = 5) jl.setText(?); on.close(); on2.close(); file1.delete(); file2.delete(); return; on2.write(tempbyte); i+; continue;else if(i 3)on.write(tempbyte);on2.write(tempbyte);i+;continue;elseon.write(tempbyte);on2.write(tempbyte);i+;continue;加密的实现如下:in = new FileInputStream(file);on = new Fil
7、eOutputStream(new_file,true);int tempbyte;int i=0;on.write(0);while (tempbyte = in.read() != -1) if(i 0) count -=1; String a=String.valueOf(count); FileWriter fw=new FileWriter(C:/Users/a/Desktop/count.txt); BufferedWriter bw=new BufferedWriter(fw); bw.write(a,0,a.length(); bw.flush(); bw.close(); e
8、lse System.out.println(?!); System.exit(0); catch (FileNotFoundException e3) e3.printStackTrace(); catch (IOException e1) e1.printStackTrace();四、实验数据首先,在未经任何处理的情况下,实验所用到的本avi格式视频是可以被普通的播放器随意打开的。图1 用potplayer播放器打开视频 运行程序,将视频加密。图2 加密视频图3 加密完成可见,加密后的视频不能再用potplayer打开了。图4 打开时出现错误用该程序打开视频:图5 打开操作打开时,软件自动
9、解密已加密过的视频。图6 打开时的解密解密完成后自动播放视频。图7 播放器界面解密功能的使用。图8 解密图9 解密完成解密完成后,又可以用potplayer再次打开该视频了。图10 可再次打开的视频文件打开五次后,会自动退出并显示“超过使用次数!”的提示。图11 运行程序后会在桌面自动生成count.txt文件图12 初始显示为5图13 进行过一次打开操作后,文件里的数减一图14 文件中的数减为0了图15 再次打开后,程序退出并在控制台显示信息实验总结这个是在刚刚接触安全编程技术时编写的,其实不是个非常复杂的程序,但是正是通过这个程序,我开始接触有关安全编程技术方面的编程。实验的内容是编写一个
10、可以处理视频(也就是加密解密)的视频播放器,看到这个题目的时候我就决定使用Java来完成这个试验了,因为据我所知,JMF可以十分方便的实现视频播放器功能。编写得有些艰难,因为之前没接触过JMF方面的内容,但是在老师和同学的帮助下我还是很快完成了本次实验。JMF这个框架十分方便,用它来实现多媒体方面的编程是非常快的,它提供了相当多的接口而隐藏了一些具体实现,这样就可以不受平台限制的呈现基媒体,因为开发者使用的时候不用考虑到本地方法。关于运行五次就关闭的功能,一开始我想得比较复杂,后来在同学的提示下,想到可以用读写文件的方式来控制软件打开次数。当然,这是个比较粗糙的方法,还有时间的话我会继续改进。通过这次实验,我发现了自身的不足,比如没有很好的书写习惯,考虑问题不周到,对于面相对象的理解不够深入等。但在编程的过程中我体验到了一分耕耘一分收获的喜悦;多次调试后程序成功运行了,那时候的欢乐是我以前无法想象的。果然,学习任何一门课程,只要学得用心,都可以从中体会到学习的快乐。今后我的进步,想必都是从这一点一点敲入编译器的代码中获得的。参考资料1.Java语言程序设计(郭克华著)2.JMF入门教程(来自网络)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1