加密解密课程设计_第1页
加密解密课程设计_第2页
加密解密课程设计_第3页
加密解密课程设计_第4页
加密解密课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 兰州商学院陇桥学院兰州商学院陇桥学院工学系课程设计报告工学系课程设计报告课课 程程 名名 称:称: JavaJava 设设 计计 题题 目:目:加加 密密 与与 解解 密密 系系 别:别:工学系工学系 专专 业业 ( (方方 向向) ):信息管理与信息系统信息管理与信息系统 年年 级、级、 班:班:20122012 级级(2 2)班)班 学学 生生 姓姓 名:名: 费亚芬费亚芬 学学 生生 学学 号:号: 20120651208 指指 导导 教教 师:师: 张张 鑫鑫 2014 年 7 月 1 日目录目录一、系统开发的背景一、系统开发的背景.1二、系统分析与设计二、系统分析与设计.1(一)(

2、一)系统功能要求系统功能要求.1(二)(二)系统模块结构设计系统模块结构设计.2三、系统的设计与实现三、系统的设计与实现.2(一)(一) 图形用户界面模块图形用户界面模块.2(二)(二) 加密操作模块加密操作模块.3( (三三) ) 解密操作模块解密操作模块.4(四)(四) 文件保存模块文件保存模块.4(五)(五) 文件选择模块文件选择模块.5四、系统测试四、系统测试.6(一)测试加密(一)测试加密.6(二)测试选择加密文件(二)测试选择加密文件.6(三)测试生成加密文件(三)测试生成加密文件.6(四)测试浏览加密文件(四)测试浏览加密文件.7(五)测试解密文件(五)测试解密文件.8五、总结五

3、、总结.8六、附件(代码、部分图表)六、附件(代码、部分图表).101加密与解密加密与解密一、一、系统开发的系统开发的背景背景随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,本程序设计对文件的加密使用的是最基础的异或加密算法。Java 语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。本程序充分利用 Java 语言的特点,针对当下社会比较重视的文件加密,设计了本程序。使用本程序可以对 txt,word 等多种文件进行加密解

4、密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。二、系统分析与设计二、系统分析与设计(一)(一) 系统功能要求系统功能要求可以采用图形用户界面,给定任意一个文本文件,进行加密,生成另一个文件,然后对加密后的文件还原。1、 向图形用户界面中添加组件;2、 设置各个组件的布局;3、 添加窗口事件;4、 查找读入及写入文件,并显示;5、 加密功能实现;6、 解密功能实现;2(二)(二) 系统模块结构设计系统模块结构设计通过对系统功能的分析,加密与解密功能如图 1 所示。开始弹出文件加密器对话框点击“文件”菜单下的“打开” ,获得文件对显示在浏览窗口的“文件”加密生成加密文件点击“保存” ,

5、选择路径,生成新文件,并以“.txt”命名点击“文件”菜单下的“打开” ,获得加密后的文件对显示在浏览窗口的“文件”解密生成解密文件结束图 1 加密与解密功能图三、系统的设计三、系统的设计与实现与实现(一)(一) 图形用户界面模块图形用户界面模块分析:在图形用户界面,设置两个面板,并分别设置显示其组件的布3局。设置两个菜单项,分别为“打开”和“保存” ;设置两个按钮,分别为“加密”和“解密” ;创建一个文本区,用一个标签注明“文件浏览窗口” ,这就是整个图形用户界面。此外,还添加了一个窗口事件 windowClosing,可以关闭运行的程序。窗口事件的代码如下所示: addWindowList

6、ener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); (二)(二) 加密操作模块加密操作模块分析:本程序采用简单的加密算法,即把从文本区获得的文本文件,初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该数组中,从而显现在“文件浏览窗口”中。代码如下:if(e.getSource()=button1)char a=texta.getText().toCharArray();/*把 texta 中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到

7、该数组a中*/texta.setText(null);int n;char secret= ;for(int i=0;ia.length;i+)char c=(char)(secretai ;/进行异或运算) texta.append(+c);4( (三三) ) 解密操作模块解密操作模块分析:解密操作其实同加密操作相同,依旧首先打开加密后的文件,使其显示在文本区中,再同样对数组里的元素进行初始化,进行异或运算,即可得到解密后的文件,再显示到“文件浏览窗口”中。入口参数:指定文件路径代码如下:if(e.getSource()=button2)char a=texta.getText().toCh

8、arArray();texta.setText(null);int n;char secret= ;for(int i=0;ia.length;i+)char c=(char)(secretai);/再次异或运算,即还原texta.append(+c);(四)文件保存模块(四)文件保存模块分析:本程序最大的特点就是:可以选择是否保存加密后的文本文件。因为加密后的文件先显示在文本区中,之后选择菜单项“保存” ,即可弹出“保存对话框” ,进行查找写入文件,写入字符流,从而实现保存。代码如下:if(e.getSource()=itemSave)/查找写入的文件filedialog_save.setV

9、isible(true);if(filedialog_save.getFile()!=null)tryFile file=new 5File(filedialog_save.getDirectory(),filedialog_save.getFile();FileWriter tofile=new FileWriter(file);/写入字符流BufferedWriter out=new BufferedWriter(tofile);out.write(texta.getText(),0,(texta.getText().length();out.close();tofile.close();

10、catch (IOException e2)(五)(五) 文件选择模块文件选择模块分析:同上个文件保存模块类似,依旧在选择菜单项“打开”后,查找读入文件,读取字符流,弹出“打开对话框” ,从而可实现获取文件。出口值:被选文件的路径代码如下:public void actionPerformed(ActionEvent e)/查找读入文件if(e.getSource()=itemOpen)filedialog_load.setVisible(true);texta.setText(null);String s;if(filedialog_load.getFile()!=null)tryFile

11、file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReader(file);/读取字符流BufferedReader in=new BufferedReader(file_reader);while(s=in.readLine()!=null)texta.append(s+n);in.close();file_reader.close();catch (IOException e1)6四、系统测试四、系统测试(一)测试(一)测试加密加密首先在

12、我机器 C 盘文件夹名为 1 的文件夹离创建一个名为Example.txt 文本文件用做测试,如图 2 所示:图 2 加密运行程序(二)测试选择加密文件(二)测试选择加密文件 点击“文件” ,选择“打开” ,即弹出“打开”对话框,选择一个文本文件,如图 3 所示: 图 3 选择加密文件7(三)(三) 测试生成加密文件测试生成加密文件选择文件后,即可在“文件浏览窗口”中显示文本的信息,点击“加密”按钮,即可在“文件浏览窗口”看到加密后的文件,如图4 所示:图 4 生成加密文件(四)测试浏览加密文件(四)测试浏览加密文件对加密后的密文进行保存,选择“文件”下的“保存” ,即可弹出“保存”对话框,选

13、择路径,即可保存,如图 5、6 所示:图 5 加密文件测试8图 6 浏览加密文件测试(五)测试解密文件(五)测试解密文件解密操作中对文件选择,密码输入和加密操作是一样的。将刚刚加密的程序进行解密,打开密文文件,选择“加密与解密”窗口下“解密”按钮,点击,即可解密,如图 7 所示: 图 7 解密文件五、总结五、总结Java 语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。而且,我觉得9随着科技的不断进步,Java 语言的优越性会不断地被挖掘出来,因为Java 语言也是有生命的,它是不断被人们的需求演变的越来越强大,这些,我觉得不言而喻。

14、但往后,我想只有在不断的使用以后才能体会到,在发现 Java 拥有秘密密钥工厂后更是感受到它的强大。Java 的 JDK 帮助文档对于使用 Java 编程是非常有帮助的,在我们编程过程中,遇到的一些不清楚的地方,都是靠它才得以解决,同时对 Java 语言的了解也更方便、深入了。程序利用 Java 图形界面设计了一个方便用户操作的窗口,使得程序运行的时候更想是个封装好的运用程序,不过我知道离这个还是有很大距离的,而程序所要提升空间非常大,现在界面所能实现的也就几个操作而已。但我们一致认为:如果程序要再做的强大点,可以引入其他的加密算法共用户选择,还可以设计成同时对多个文件进行加密,不过这只能放到

15、我们课下对此进行更深一步的研究了。程序的每个模块实现的功能还算完整,层次间的调用还是比较清晰的,各个功能也得到了基本的实现。算法的时空分析,其实就是指算法的空间复杂度(包括时间复杂度和空间复杂度) ,其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。这次课程设计的要求并不多,只要实现加密与解密功能,而且只需要采用一种加密算法,但是为了本次课程设计,我们组也搜索了大量的资料,并根据在课堂上,书本上,老师讲过的知识,结合自身主观和客观因素,制定了本次课程设计的目标,并齐心协力,完成了此次设计。10通过本次的课程设计,我们还知道了许多自身存在的不足,例如仅掌握了

16、一种加密算法,但在日益发达的社会商业等领域,加密解密需要做的还非常多,并且 Java 领域博大精深,我们现在只是学到了它的一点皮毛而已,所以还需多多努力。但是通过这些我还是学到了很多东西,先不说其他的,我最起码最基础的加密算法,而且以后可以运用到自己想要保密的文件当中去。通过这次课程设计,我用 JAVA 语言实现,我这是我对 JAVA 语言有了根深的了解巩固了以前学到的知识,也学习到了新的知识,课程设计虽然暂告一个段落,但我们学习 Java 的步伐不会终止。六、附件(代码、部分图表)六、附件(代码、部分图表)源代码:import java.awt.*;import java.awt.event

17、.*;import java.io.*;import javax.swing.*;class Myframe extends Frame implements ActionListener FileDialog filedialog_save,filedialog_load;Button button1,button2;Label label;MenuBar bar;Menu menu;MenuItem itemOpen,itemSave;TextArea texta;Myframe(String s) /创建对话框11super(s); texta= new TextArea(38,160)

18、;button1= new Button(加密);button2= new Button(解密);menu=new Menu(文件);itemOpen=new MenuItem(打开);itemSave=new MenuItem(保存);label=new Label(文件浏览窗口);itemOpen.addActionListener(this);itemSave.addActionListener(this);button1.addActionListener(this);button2.addActionListener(this);filedialog_save=new FileDia

19、log(this,保存文件对话框,FileDialog.SAVE);filedialog_load=new FileDialog(this,打开文件对话框,FileDialog.LOAD);filedialog_save.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)filedialog_save.setVisible(false););filedialog_load.addWindowListener(new WindowAdapter()public void windowClosi

20、ng(WindowEvent e)filedialog_load.setVisible(false););Box box1=Box.createHorizontalBox();/创建一个从左到右显示其组件的 box1;12Box box2=Box.createVerticalBox();/创建一个从上到下显示其组件的 box2; Box box3=Box.createVerticalBox();Box boxbase=Box.createVerticalBox();Panel panel1=new Panel();Panel panel2=new Panel();setMenuBar(bar=

21、new MenuBar();bar.add(menu);menu.add(itemOpen); menu.add(itemSave);panel1.add(button1);panel1.add(button2);box1.add(panel1);box2.add(label);panel2.add(texta);box3.add(panel2);boxbase.add(box1);boxbase.add(box2);boxbase.add(box3);add(boxbase);setLayout(new FlowLayout();setBounds(100,0,1200,750);setVi

22、sible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );/“关闭”窗口事件;13public void actionPerformed(ActionEvent e)/查找读入文件if(e.getSource()=itemOpen)filedialog_load.setVisible(true);texta.setText(null);String s;if(filedialog_load.getFile()!=null)tryFil

23、e file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReader(file);/读取字符流BufferedReader in=new BufferedReader(file_reader);while(s=in.readLine()!=null)texta.append(s+n);in.close();file_reader.close();catch (IOException e1)if(e.getSource()=itemSave)/查找写入的文件filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null)1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论