文件的加密与解密_第1页
文件的加密与解密_第2页
文件的加密与解密_第3页
文件的加密与解密_第4页
文件的加密与解密_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、前言随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。但是这些算法虽然原理简单,但具体实现起来却非常繁琐复杂,故而本程序设计对文件的加密使用的是最根底的异或加密算法。Java语言具有简单、平安、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。Java确实具备了“

2、一次写成,处处运行的特点,所以,Java已经成为网络时代最重要的编程语言之一。本程序充分利用Java语言的特点,针对当下社会比拟重视的文件加密,设计了本程序。使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,满足了用户对文件平安性的需求。1. 题目分析的要求和内容 根本要求: 界面实现,建立菜单。个文本文件,进行加密,生成另一个文件。 3.对加密后的文件复原。1.向图形用户界面中添加组件。2.设置各个组件的布局。件。4. 查找读入及写入文件,并显示。现。现。介绍本程序采用传统的异或加密算法,没有采用DES算法,但对于世界上公认的DES是一种分组加密算法,是以64位

3、为分组对数据加密。64位一组的明文从算法的一端 输入,64位的密文从另一端输出。密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽 略)。密钥可以是任意的56位数,且可以在任意的时候改变。 本程序采用的算法与DES相同的一点是:都是一个对称算法:及加密和解密用的是同一个算法。我们也许知道公认的DES算法的工作过程,那就是:假设Mode为加密,那么用Key对数据Data进行加密,生成Data的密码 形式64位作为DES的输出结果;假设Mode为解密,那么用Key对密码形式的数据Data解密,还 原为Data的明码形式64位作为DES的输出结果。但是,重要的是本程序首

4、先经“翻开菜单项,进入文件选择模块,读取字符流,输出文本文档后,在一个数组中,对字符进行异或运算,从而到达加密的效果。在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密 ,然后以密码形式通过公共通信网如 网传输到通信网络的终点,数据到达目的 地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核 心数据如PIN,MAC等在公共通信网中传输的平安性和可靠性。通过定期在通信网络的源 端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网 络的流行作法。 简单地说,DES算法只不过是加密的其中一种技术,通过一

5、个初始置换,将明文分组分成左半部分和右半部分,各32位 长。然后进行16轮相同的运算,这些相同的运算被称为函数f,在运算过程中数据和密 钥相结合。经过16轮运算后左、右局部在一起经过一个置换初始置换的逆置换,这样算 法就完成了。 本程序虽然没有采用此算法,而是采用众所周知的与DES有相似之处的异或算法,实际上是降低了程序的复杂度,使其更清晰,但功能依旧很强大,可见优势也是很多的。2. 概要设计要引入的包import java.awt.*; /包含用于创建用户界面和绘制图形图像的所有类。impor.*; /提供处理由 AWT 组件所激发的各类事件的接口和类。import javax.swing.

6、*; /提供一组“轻量级全部是 Java 语言组件,尽量让这些组件在所有平台上的工作方式都相同。import java.io.*; /通过数据流、序列化和文件系统提供系统输入和输出。图形用户界面模块:添加各种所需组件,设置窗口事件。加密操作模块:根据选择的文本文件,在浏览窗口中显示后,进行加密,显示在“文本浏览窗口中。解密操作模块:同加密模块一样,由密文的保存路径,翻开,进行解密,显示在“文本浏览窗口中。文件选择模块:选择需要加密或解密的文件。文件保存模块:选择保存路径,保存需要加密或解密的文件。层次(调用)关系文件加密器模块文件选择模块加密操作模块文件保存模块解密操作模块界面模块在图形用户界

7、面,设置两个面板,并分别设置显示其组件的布局。设置两个菜单项,分别为“翻开和“保存;设置两个按钮,分别为“加密和“解密;创立一个文本区,用一个标签注明“文件浏览窗口,这就是整个图形用户界面。 此外,还添加了一个窗口事件windowClosing,可以关闭运行的程序。窗口事件的代码实现:addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );模块本程序采用简单的加密算法,即把从文本区获得的文本文件,初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该

8、数组中,从而显现在“文件浏览窗口中。代码实现:urce()=button1)char a=texta.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a中*/texta.setText(null);int n;char secret=' 'h;i+)char c=(char)(secretai ;/进行异或运算) texta.append(""+c);模块 解密操作其实同加密操作相同,依旧首先打开加密后的文件,使其显示在文本区中,再同样对数组里的元素进行初始化

9、,进行异或运算,即可得到解密后的文件,再显示到“文件浏览窗口中。 入口参数:指定文件路径代码实现:urce()=button2)char a=texta.getText().toCharArray();texta.setText(null);int n;char secret=' 'h;i+)char c=(char)(secretai);/再次异或运算,即复原texta.append(""+c);模块本程序最大的特点就是:可以选择是否保存加密后的文本文件。因为加密后的文件先显示在文本区中,之后选择菜单项“保存,即可弹出“保存对话框,进行查找写入文件,写入字

10、符流,从而实现保存。代码实现:urce()=itemSave)/查找写入的文件filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null)tryFile file=new File(filedialog_save.getDirectory(),filedialog_save.getFile();FileWriter tofile=new FileWriter(file);/写入字符流BufferedWriter out=new BufferedWriter(tofile);(texta.getText(),0,(tex

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

12、tryFile file=new File(filedialog_load.getDirectory(),filedialog_load.getFile();FileReader file_reader=new FileReader(file);/读取字符流BufferedReader in=new BufferedReader(file_reader);whileine()!=null)texta.append(s+'n');();file_reade();catch (IOException e1)加密首先在我机器D盘里创建一个名为 塔里木大学.txt文本文件用做测试。运行

13、程序,弹出如图5-1的对话框点击“文件,选择“翻开,即弹出“翻开对话框,选择一个文本文件,如图4.2 文件选择文件后,即可在“文件浏览窗口中显示文本的信息,点击“加密按钮,即可在“文件浏览窗口看到加密后的文件如图4-3。 文件对加密后的密文进行保存,选择“文件下的“保存,即可弹出“保存对话框,选择路径,即可保存,如图。文件解密操作中对文件选择,密码输入和加密操作是一样的。将刚刚加密的程序进行解密,翻开密文文件,选择“加密与解密窗口下“解密按钮,点击,即可解密,如下图。5小结这次课程设计的要求并不多,只要实现加密与解密功能,而且只需要采用一种加密算法,但是为了本次课程设计,我们组也搜索了大量的资

14、料,并根据在课堂上,书本上,老师讲过的知识,结合自身主观和客观因素,制定了本次课程设计的目标,并齐心协力,完成了此次设计。通过本次的课程设计,我们还知道了许多自身存在的缺乏,例如仅掌握了一种加密算法,但在日益发达的社会商业等领域,加密解密需要做的还非常多,并且Java领域博大精深,我们现在只是学到了它的一点皮毛而已,所以还需多多努力。但是通过这些我还是学到了很多东西,先不说其他的,我最起码最根底的加密算法,而且以后可以运用到自己想要保密的文件当中去。通过这次课程设计,我用JAVA语言实现,我这是我对JAVA语言有了根深的了解稳固了以前学到的知识,也学习到了新的知识,课程设计虽然暂告一个段落,但

15、我们学习Java的步伐不会终止。参考文献1丁振凡.?Java语言实用教程?北京邮电大学出版社 2耿祥义.?Java2实用教程?清华大学出版社3赵付青.?Java面向对象程序设计?国防工业出版社.4耿祥义.?Java课程设计?清华大学出版社 附录 源代码import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;class Myframe extends Frame implements ActionListener FileDialog filedialog_save,filedialog_lo

16、ad;Button button1,button2;Label label;MenuBar bar;Menu menu;MenuItem itemOpen,itemSave;TextArea texta;Myframe(String s) /创立对话框super(s); texta= new TextArea(38,160);button1= new Button("加密");button2= new Button("解密");menu=new Menu("文件");itemOpen=new MenuItem("翻开&quo

17、t;);itemSave=new MenuItem("保存");label=new Label("文件浏览窗口");itemOpen.addActionListener(this);itemSave.addActionListener(this);button1.addActionListener(this);button2.addActionListener(this);filedialog_save=new FileDialog(this,"保存文件对话框",FileDialog.SAVE);filedialog_load=new

18、 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 windowClosing(WindowEvent e)filedialog_load.setVisib

19、le(false););Box box1=Box.createHorizontalBox();/创立一个从左到右显示其组件的 box1;Box box2=Box.createVerticalBox();/创立一个从上到下显示其组件的 box2; Box box3=Box.createVerticalBox();Box boxbase=Box.createVerticalBox();Panel panel1=new Panel();Panel panel2=new Panel();setMenuBar(bar=new MenuBar();bar.add(menu);menu.add(itemOp

20、en); 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);setVisible(true); addWindowListener(new WindowAd

21、apter() public void windowClosing(WindowEvent e) 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()

22、,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)tryFile file=new File(filedialog_save.getDirectory(),filedialog_save.getFile();FileW

温馨提示

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

评论

0/150

提交评论