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

下载本文档

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

文档简介

1、目目 录:录:前前 言言.1一、题目分析一、题目分析.21 1.1.1 课程课程设计设计的要求和内容(包括原始数据、技术要求、工作要求)的要求和内容(包括原始数据、技术要求、工作要求) .21.2 团队任务分析团队任务分析 21.31.3 相关学问介绍相关学问介绍.2二、概要设计二、概要设计.32.12.1 抽象数据类型的定义抽象数据类型的定义.32.22.2 各程序模块之间的层次各程序模块之间的层次( (调用调用) )关系关系.4三、具体设计三、具体设计.53.13.1 程序流程图程序流程图 .5 53.23.2 图形用户界面模块图形用户界面模块 .63.33.3 加密操作模块加密操作模块.

2、73.43.4 解密操作模块解密操作模块.7 73.53.5 文件保存模块文件保存模块.73.63.6 文件选择模块文件选择模块 .8四、调试分析四、调试分析.94.14.1 对设计与实现的回顾争辩和分析对设计与实现的回顾争辩和分析.104.24.2 算法的时空分析算法的时空分析.114.34.3 阅历和体会阅历和体会.12五、测试结果五、测试结果.125.15.1 加密加密 .125.25.2 解密解密 .15六、主要参考资料六、主要参考资料 .16 七、附录七、附录.16精选文档- 1 -前前 言言 随着网络技术的不断进展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的爱护,

3、文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有 RSA、DES、MD5 等。但是这些算法虽然原理简洁,但具体实现起来却格外繁琐简单,故而本程序设计对文件的加密使用的是最基础的异或加密算法。Java 语言具有简洁、平安、可移植、面对对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java 是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java 不仅可以用来开发大型的应用程序,而且特殊适合于 Internet 的应用开发。Java 的确具备了“一次写成,处处运行”的特点,所以,Java 已经成为网络时代最重要的编程语言之

4、一。本程序充分利用 Java 语言的特点,针对当下社会比较重视的文件加密,设计了本程序。使用本程序可以对 txt,word 等多种文件进行加密解密,使用便捷有用,功能完善,满足了用户对文件平安性的需求。关键词:JAVA ; 加密; 解密;精选文档- 2 -一、题目分析一、题目分析1.1 课程设计的要求和内容(包括原始数据、技术要求、工作要课程设计的要求和内容(包括原始数据、技术要求、工作要求)求)基本要求:1.用图形用户界面实现,建立菜单。2. 给定任意一个文本文件,进行加密,生成另一个文件。3对加密后的文件还原。1.2 团队任务分析团队任务分析分析如下:1向图形用户界面中添加组件。2设置各个

5、组件的布局。3.添加窗口大事。4. 查找读入及写入文件,并显示。5.加密功能实现。6.解密功能实现。其中:团队成员及其负责的任务如下: 冯治波:图形用户界面 吴祎筱和陈冬姣:文本加密 高峻辉:文本的还原(解密)1.3 相关学问介绍相关学问介绍本程序接受传统的异或加密算法,没有接受 DES 算法,但对于世界上公认的 DES 是一种分组加密算法,是以 64 位为分组对数据加密。64 位一组的明文从算法的一端 输入,64 位的密文从另一端输出。密钥的长度为 56 位(密钥通常表示为 64 位的数,但每个第 8 位都用作奇偶检验,可以忽 略)。密钥可以是任意的 56 位数,且可以在任意的时候转变。 本

6、程序接受的算法与 DES 相同的精选文档- 3 -一点是:都是一个对称算法:及加密和解密用的是同一个算法。我们或许知道公认的 DES 算法的工作过程,那就是:若 Mode 为加密,则用Key 对数据 Data 进行加密,生成 Data 的密码 形式(64 位)作为 DES 的输出结果;若 Mode 为解密,则用 Key 对密码形式的数据 Data 解密,还 原为 Data 的明码形式(64 位)作为 DES 的输出结果。但是,重要的是本程序首先经“打开”菜单项,进入文件选择模块,读取字符流,输出文本文档后,在一个数组中,对字符进行异或运算,从而达到加密的效果。在通信网络的两端,双方商定了全都的

7、 Key,在通信的源点用 Key 对核心数据进行 DES 加密 ,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的 地后,用同样的 Key 对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核 心数据(如 PIN,MAC 等)在公共通信网中传输的平安性和牢靠性。通过定期在通信网络的源 端和目的端同时改用新的 Key,便能更进一步提高数据的保密性,这正是现在金融界交易网 络的流行作法。 简洁地说,DES 算法只不过是加密的其中一种技术,通过一个初始置换,将明文分组分成左半部分和右半部分,各 32 位 长。然后进行 16 轮相同的运算,这些相同的运算被称为函数

8、f,在运算过程中数据和密 钥相结合。经过 16 轮运算后左、右部分在一起经过一个置换(初始置换的逆置换) ,这样算 法就完成了。 本程序虽然没有接受此算法,而是接受众所周知的与 DES 有相像之处的异或算法,实际上是降低了程序的简单度,使其更清楚,但功能照旧很强大,可见优势也是很多的。二、概要设计二、概要设计2.1 抽象数据类型的定义抽象数据类型的定义2.1.12.1.1 程序所需要引入的包:程序所需要引入的包:import java.awt.*; /包含用于创建用户界面和绘制图形图像的全部类。精选文档- 4 -import java.awt.event.*; /供应处理由 AWT 组件所激发

9、的各类大事的接口和类。import javax.swing.*; /供应一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在全部平台上的工作方式都相同。import java.io.*; /通过数据流、序列化和文件系统供应系统输入和输出。2.1.22.1.2 其他定义:其他定义:new FlowLayout() 对文件加密器对话框接受 FlowLayout 管理器。new ActionListener() 对文件的加密和解密设置大事监听器。2.2 各程序模块之间的层次各程序模块之间的层次(调用调用)关系关系2.2.12.2.1 模块定义模块定义图形用户界面模块:添加各种所需组件,设置

10、窗口大事。加密操作模块:依据选择的文本文件,在扫瞄窗口中显示后,进行加密,显示在“文本扫瞄窗口”中。解密操作模块:同加密模块一样,由密文的保存路径,打开,进行解密,显示在“文本扫瞄窗口”中。文件选择模块:选择需要加密或解密的文件。文件保存模块:选择保存路径,保存需要加密或解密的文件。2.2.2 层次层次(调用调用)关系关系 依据以上各程序模块的定义,可以大致画出各模块的层次调用关系,由文件加密器模块开头调用,直到解密模块调用为止。如下图 2-2-2 所示。精选文档- 5 -文件加密器模块文件选择模块加密操作模块文件保存模块解密操作模块 图图 2-2-22-2-2 层次(调用)关系层次(调用)关

11、系三、具体设计三、具体设计3.1 程序流程图程序流程图 该程序的模块调用格外简洁明白,所以主程序的运行也很清楚,以下就是主程序的具体流程图,如图 3-1 所示精选文档- 6 -开头弹出文件加密器对话框点击“文件”菜单下的“打开” ,获得文件对显示在扫瞄窗口的“文件”加密生成加密文件点击“保存” ,选择路径,生成新文件,并以“.txt”命名点击“文件”菜单下的“打开” ,获得加密后的文件对显示在扫瞄窗口的“文件”解密生成解密文件结束 图图 3-13-1 主程序流程图主程序流程图3.2 图形用户界面模块图形用户界面模块在图形用户界面,设置两个面板,并分别设置显示其组件的布局。设置两个菜单项,分别为

12、“打开”和“保存” ;设置两个按钮,分别为“加密”和“解密”;创建一个文本区,用一个标签注明“文件扫瞄窗口” ,这就是整个图形用户界面。 此外,还添加了一个窗口大事 windowClosing,可以关闭运行的程序。精选文档- 7 -窗口大事的代码实现:addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );3.3 加密操作模块加密操作模块本程序接受简洁的加密算法,即把从文本区获得的文本文件,初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该数组中

13、,从而显现在“文件扫瞄窗口”中。代码实现:代码实现:if(e.getSource()=button1)char a=texta.getText().toCharArray();/*把 texta 中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组 a中*/texta.setText(null);int n;char secret= ;for(int i=0;ia.length;i+)char c=(char)(secretai);/进行异或运算texta.append(+c);精选文档- 8 -3.4 解密操作模块解密操作模块 解密操作其实同加密操作相同,照旧

14、首先打开加密后的文件,使其显示在文本区中,再同样对数组里的元素进行初始化,进行异或运算,即可得到解密后的文件,再显示到“文件扫瞄窗口”中。 入口参数:指定文件路径代码实现:代码实现:if(e.getSource()=button2)char a=texta.getText().toCharArray();texta.setText(null);int n;char secret= ;for(int i=0;ia.length;i+)char c=(char)(secretai);/再次异或运算,即还原texta.append(+c);3.5 文件保存模块文件保存模块本程序最大的特点就是:可以选

15、择是否保存加密后的文本文件。由于加密后的文件先显示在文本区中,之后选择菜单项“保存” ,即可弹出“保存对话框” ,进行查找写入文件,写入字符流,从而实现保存。代码实现:代码实现:精选文档- 9 -if(e.getSource()=itemSave)/查找写入的文件filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null)tryFile file=new File(filedialog_save.getDirectory(),filedialog_save.getFile();FileWriter tofile=new

16、 FileWriter(file);/写入字符流BufferedWriter out=new BufferedWriter(tofile);out.write(texta.getText(),0,(texta.getText().length();out.close();tofile.close();catch (IOException e2)3.6 文件选择模块文件选择模块 同上个文件保存模块类似,照旧在选择菜单项“打开”后,查找读入文件,读取字符流,弹出“打开对话框” ,从而可实现猎取文件。 出口值:被选文件的路径代码实现:代码实现:public void actionPerformed(

17、ActionEvent e)/查找读入文件if(e.getSource()=itemOpen)精选文档- 10 -filedialog_load.setVisible(true);texta.setText(null);String s;if(filedialog_load.getFile()!=null)tryFile file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReader(file);/读取字符流BufferedReader in

18、=new BufferedReader(file_reader);while(s=in.readLine()!=null)texta.append(s+n);in.close();file_reader.close();catch (IOException e1)四、调试分析四、调试分析4.1 对设计与实现的回顾争辩和分析对设计与实现的回顾争辩和分析在程序设计之初,考虑的是如何实现 DES 算法,但发觉 DES 算法对于本次小程序来说,的确过于繁琐,但当我们发觉接受简化后的 DES 算法-异或算精选文档- 11 -法也可实现本功能,所以以后大大削减了工作量,可以说用 Java 语言是程序实现的

19、一个成功之处。Java 语言具有简洁、平安、可移植、面对对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。而且,我觉得随着科技的不断进步,Java 语言的优越性会不断地被挖掘出来,由于Java 语言也是有生命的,它是不断被人们的需求演化的越来越强大,这些,我觉得不言而喻。但往后,我想只有在不断的使用以后才能体会到,在发觉 Java拥有隐秘密钥工厂后更是感受到它的强大。Java 的 JDK 挂念文档对于使用 Java编程是格外有挂念的,在我们编程过程中,遇到的一些不清楚的地方,都是靠它才得以解决,同时对 Java 语言的了解也更便利、深化了。程序利用 Java 图形界面

20、设计了一个便利用户操作的窗口,使得程序运行的时候更想是个封装好的运用程序,不过我知道离这个还是有很大距离的,而程序所要提升空间格外大,现在界面所能实现的也就几个操作而已。但我们全都认为:假如程序要再做的强大点,可以引入其他的加密算法共用户选择,还可以设计成同时对多个文件进行加密,不过这只能放到我们课下对此进行更深一步的争辩了。程序的每个模块实现的功能还算完整,层次间的调用还是比较清楚的,各个功能也得到了基本的实现。4.2 算法的时空分析算法的时空分析算法的时空分析,其实就是指算法的空间简单度(包括时间简单度和空间简单度) ,其作用: 时间简单度是度量算法执行的时间长短;而空间简单度是度量算法所

21、需存储空间的大小。程序的时间简单度理论上是算不出来的,必需经过 必需上机运行测试才能知道。但我们不行能也没有必要对每个算法都上机测试。但我们可以知道本算法其实是 DES 算法的简化,所以,确定 只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了 ,并且,一个算法花费的时间与算法中语句的执行次数 成正比例,DES 对 64 位的明文分组进行操作,通过一个初始置换,将明文分组成左半部分 Li 和右半部分 Ri,各 32 位长。然后进行 16 轮完全相同的运算,本程序直接接受数组,对其中的字符循环异或,只需进行一轮,所以时间简单度 T(n)是比较小的。空间简单度 O(n)也是一样的,它是对精

22、选文档- 12 -程序占用内存的分析,由公式 T(n)=O(f(n) )知,时间简单度与空间简单度均为 O(n)。4.3 阅历和体会阅历和体会这次课程设计的要求并不多,只要实现加密与解密功能,而且只需要接受一种加密算法,但是为了本次课程设计,我们组也搜寻了大量的资料,并依据在课堂上,书本上,老师讲过的学问,结合自身主观和客观因素,制定了本次课程设计的目标,并齐心协力,完成了此次设计。通过本次的课程设计,我们还知道了很多自身存在的不足,例如仅把握了一种加密算法,但在日益发达的社会商业等领域,加密解密需要做的还格外多,并且 Java 领域博大精深,我们现在只是学到了它的一点皮毛而已,所以还需多多努

23、力。但是通过这些我还是学到了很多东西,先不说其他的,我最起码最基础的加密算法,而且以后可以运用到自己想要保密的文件当中去。通过这次课程设计,我用 JAVA 语言实现,我这是我对 JAVA 语言有了根深的了解巩固了以前学到的学问,也学习到了新的学问,课程设计虽然暂告一个段落,但我们学习 Java 的步伐不会终止。五、测试结果五、测试结果5.1 加密加密 首先在我机器 C 盘文件夹名为 1 的文件夹离创建一个名为 Example.txt 文本文件用做测试。 运行程序,弹出如图 5-1-1 的对话框精选文档- 13 - 图图 5-1-15-1-1 运行程序运行程序点击“文件” ,选择“打开” ,即弹

24、出“打开”对话框,选择一个文本文件,如图 5-1-2。 图图 5-1-25-1-2 选择加密文件选择加密文件精选文档- 14 - 选择文件后,即可在“文件扫瞄窗口”中显示文本的信息,点击“加密”按钮,即可在“文件扫瞄窗口”看到加密后的文件(如图 5-1-3) 。 图图 5-1-35-1-3 生成加密文件生成加密文件对加密后的密文进行保存,选择“文件”下的“保存” ,即可弹出“保存”对话框,选择路径,即可保存,如图 5-1-4 和 5-1-5 所示。精选文档- 15 - 图图 5-1-45-1-4 保存加密文件保存加密文件 图图 5-1-55-1-5 扫瞄加密文件扫瞄加密文件5.2 解密解密解密

25、操作中对文件选择,密码输入和加密操作是一样的。将刚刚加密的程序进行解密,打开密文文件,选择“加密与解密”窗口下“解密”按钮,点击,即可解密,如图 5-2 所示。图图 5-25-2 生成解密文件生成解密文件精选文档- 16 -六、主要参考资料六、主要参考资料 1 Java 语言程序设计教程邱桃荣 机械工业出版社 2 Java 程序设计试验指导陈轶 姚晓昆 清华高校出版社 3 耿祥义等.Java 课程设计(第 2 版).北京:清华高校出版社,2006.8 4 耿祥义等.Java 有用教程(第三版).北京:清华高校出版社,2006.8 5 埃克尔. Java 编程思想(第 4 版).北京:机械工业出

26、版社,2007.6 6 通过互连网检索相关资料。七、附录七、附录源代码:源代码:import java.awt.*;import java.awt.event.*;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

27、;TextArea texta;Myframe(String s) /创建对话框精选文档- 17 -super(s); texta= new TextArea(38,160);button1= new Button(加密);button2= new Button(解密);menu=new Menu(文件);itemOpen=new MenuItem(打开);itemSave=new MenuItem(保存);label=new Label(文件扫瞄窗口);itemOpen.addActionListener(this);itemSave.addActionListener(this);butt

28、on1.addActionListener(this);button2.addActionListener(this);filedialog_save=new FileDialog(this,保存文件对话框,FileDialog.SAVE);filedialog_load=new FileDialog(this,打开文件对话框,FileDialog.LOAD);filedialog_save.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)filedialog_save.setVisibl

29、e(false););filedialog_load.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)filedialog_load.setVisible(false);精选文档- 18 -);Box box1=Box.createHorizontalBox();/创建一个从左到右显示其组件的 box1;Box box2=Box.createVerticalBox();/创建一个从上到下显示其组件的 box2; Box box3=Box.createVerticalBox();Box bo

30、xbase=Box.createVerticalBox();Panel panel1=new Panel();Panel panel2=new Panel();setMenuBar(bar=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(

31、box2);boxbase.add(box3);add(boxbase);setLayout(new FlowLayout();setBounds(100,0,1200,750);setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)精选文档- 19 - System.exit(0); );/“关闭”窗口大事;public void actionPerformed(ActionEvent e)/查找读入文件if(e.getSource()=itemOpen)filedialog_load.setVisible(true);texta.setText(null);String s;if(filedialog_load.getFile()!=null)tryFile file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReade

温馨提示

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

最新文档

评论

0/150

提交评论