欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    JAVA文本文档的加密与解密.docx

    • 资源ID:3913181       资源大小:434.15KB        全文页数:22页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    JAVA文本文档的加密与解密.docx

    1、JAVA文本文档的加密与解密计算机与通信学院课程设计说明书文本文档的加密与解密 作 者:王念政 学 号:* 专 业:软件技术 班 级:软件二班 指导教师:* 答辩时间:2012年6月25日文本文档的加密与解密姓名:*学号:* 摘 要随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。但是这些算法虽然原理简单,但具体实现起来却非常繁琐复杂,故而本程序设计对文件的加密使用的是最基础的异或加密算法。Java语言具有简单、安全、可移植、面向对象、健壮、多线程

    2、、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。Java确实具备了“一次写成,处处运行”的特点,所以,Java已经成为网络时代最重要的编程语言之一。本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。关键词:JAVA ; 加密; 解密;一、课设任务及要求任务:图形化界面(GUI)编程,编写一个加密与解

    3、密程序 要求:(1)采用图形用户界面(2)给定任意一个文本文件,进行加密,生成另一个文件(3)对加密后的文件还原(解密)二、需求分析基本要求:1.用图形用户界面实现,建立菜单。2. 给定任意一个文本文件,进行加密,生成另一个文件。3对加密后的文件还原。分析如下:1向图形用户界面中添加组件。2设置各个组件的布局。3.添加窗口事件。4. 查找读入及写入文件,并显示。5.加密功能实现。6.解密功能实现。 三、设计思路本程序采用传统的异或加密算法,没有采用DES算法,但对于世界上公认的DES是一种分组加密算法,是以64位为分组对数据加密。64位一组的明文从算法的一端 输入,64位的密文从另一端输出。密

    4、钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽 略)。密钥可以是任意的56位数,且可以在任意的时候改变。 本程序采用的算法与DES相同的一点是:都是一个对称算法:及加密和解密用的是同一个算法。我们也许知道公认的DES算法的工作过程,那就是:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码 形式(64位)作为DES的输出结果;若Mode为解密,则用Key对密码形式的数据Data解密,还 原为Data的明码形式(64位)作为DES的输出结果。但是,重要的是本程序首先经“打开”菜单项,进入文件选择模块,读取字符流,输出文本文档后,在一个数组中,对

    5、字符进行异或运算,从而达到加密的效果。在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密 ,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的 地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核 心数据(如PIN,MAC等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源 端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网 络的流行作法。 简单地说,DES算法只不过是加密的其中一种技术,通过一个初始置换,将明文分组分成左半部分和右半部分,各32位 长。然后进行1

    6、6轮相同的运算,这些相同的运算被称为函数f,在运算过程中数据和密 钥相结合。经过16轮运算后左、右部分在一起经过一个置换(初始置换的逆置换),这样算 法就完成了。 本程序虽然没有采用此算法,而是采用众所周知的与DES有相似之处的异或算法,实际上是降低了程序的复杂度,使其更清晰,但功能依旧很强大,可见优势也是很多的。四、详细设计4.1程序流程图该程序的模块调用十分简单明了,所以主程序的运行也很清晰,以下就是主程序的详细流程图,如图4-1所示图4-1流程图4.2图形用户界面模块在图形用户界面,设置两个面板,并分别设置显示其组件的布局。设置两个菜单项,分别为“打开”和“保存”;设置两个按钮,分别为“

    7、加密”和“解密”;创建一个文本区,用一个标签注明“文件浏览窗口”,这就是整个图形用户界面。 此外,还添加了一个窗口事件windowClosing,可以关闭运行的程序。窗口事件的代码实现:addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); 4.3加密操作模块本程序采用简单的加密算法,即把从文本区获得的文本文件,初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该数组中,从而显现在“文件浏览窗口”中。代码实现:if(e.getSource()=b

    8、utton1) 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); 4.4解密操作模块 解密操作其实同加密操作相同,依旧首先打开加密后的文件,使其显示在文本区中,再同样对数组里的元素进行初始化,进行异或运算,即可得到解密后的文件

    9、,再显示到“文件浏览窗口”中。 入口参数:指定文件路径代码实现: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); 4.5文件保存模块本程序最大的特点就是:可以选择是否保存加密后的文本文件。因为加密后的文件先显示在文本区中,之后选择菜单项“保存”,即可弹出“保存对话框”,进行查

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

    11、e); out.write(texta.getText(),0,(texta.getText().length(); out.close(); tofile.close(); catch (IOException e2) 4.6文件选择模块 同上个文件保存模块类似,依旧在选择菜单项“打开”后,查找读入文件,读取字符流,弹出“打开对话框”,从而可实现获取文件。 出口值:被选文件的路径代码实现:public void actionPerformed(ActionEvent e)/查找读入文件 if(e.getSource()=itemOpen) filedialog_load.setVisible

    12、(true); texta.setText(null); String s; if(filedialog_load.getFile()!=null) try File 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(

    13、s+n); in.close(); file_reader.close(); catch (IOException e1) 五、运行调试与分析讨论5.1加密 首先在我机器C盘文件夹名为1的文件夹离创建一个名为Example.txt文本文件用做测试。 运行程序,弹出如图5-1的对话框图5-1运行程序点击“文件”,选择“打开”,即弹出“打开”对话框,选择一个文本文件,如图5-2。 图 5-2选择加密文件 选择文件后,即可在“文件浏览窗口”中显示文本的信息,点击“加密”按钮,即可在“文件浏览窗口”看到加密后的文件(如图5-3)。图 5-3 生成加密文件对加密后的密文进行保存,选择“文件”下的“保存”

    14、,即可弹出“保存”对话框,选择路径,即可保存,如图5-4和5-5所示。 图 5-4 保存加密文件图 5-5 浏览加密文件5.2 解密解密操作中对文件选择,密码输入和加密操作是一样的。将刚刚加密的程序进行解密,打开密文文件,选择“加密与解密”窗口下“解密”按钮,点击,即可解密,如图5-6所示。图5-6 加密5.3分析讨论在程序设计之初,考虑的是如何实现DES算法,但发现 DES算法对于本次小程序来说,的确过于繁琐,但当我们发现采用简化后的DES算法-异或算法也可实现本功能,所以以后大大减少了工作量,可以说用Java语言是程序实现的一个成功之处。Java语言具有简单、安全、可移植、面向对象、健壮、

    15、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。而且,我觉得随着科技的不断进步,Java语言的优越性会不断地被挖掘出来,因为Java语言也是有生命的,它是不断被人们的需求演变的越来越强大,这些,我觉得不言而喻。但往后,我想只有在不断的使用以后才能体会到,在发现Java拥有秘密密钥工厂后更是感受到它的强大。Java的JDK帮助文档对于使用Java编程是非常有帮助的,在我们编程过程中,遇到的一些不清楚的地方,都是靠它才得以解决,同时对Java语言的了解也更方便、深入了。程序利用Java图形界面设计了一个方便用户操作的窗口,使得程序运行的时候更想是个封装好的运用程序,不过我知道离这个

    16、还是有很大距离的,而程序所要提升空间非常大,现在界面所能实现的也就几个操作而已。但我们一致认为:如果程序要再做的强大点,可以引入其他的加密算法共用户选择,还可以设计成同时对多个文件进行加密,不过这只能放到我们课下对此进行更深一步的研究了。程序的每个模块实现的功能还算完整,层次间的调用还是比较清晰的,各个功能也得到了基本的实现。算法的时空分析,其实就是指算法的空间复杂度(包括时间复杂度和空间复杂度),其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。程序的时间复杂度理论上是算不出来的,必须经过必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测

    17、试。但我们可以知道本算法其实是DES算法的简化,所以,肯定只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了,并且,一个算法花费的时间与算法中语句的执行次数成正比例,DES对64位的明文分组进行操作,通过一个初始置换,将明文分组成左半部分Li和右半部分Ri,各32位长。然后进行16轮完全相同的运算,本程序直接采用数组,对其中的字符循环异或,只需进行一轮,所以时间复杂度T(n)是比较小的。空间复杂度O(n)也是一样的,它是对程序占用内存的分析,由公式T(n)=O(f(n)知,时间复杂度与空间复杂度均为O(n)。六、设计体会与小结这次课程设计的要求并不多,只要实现加密与解密功能,而且只需要

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

    19、前学到的知识,也学习到了新的知识,课程设计虽然暂告一个段落,但我们学习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 FileDialo

    20、g filedialog_save,filedialog_load; 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(打开);

    21、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 FileDialog(this,打开文件对话框,FileDial

    22、og.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.setVisible(false); ); Box box1=Box.createHoriz

    23、ontalBox();/创建一个从左到右显示其组件的 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(itemOpen); menu.add(itemSave); pane

    24、l1.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 WindowAdapter() public v

    25、oid 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) try File file=new File(filedialog_load.getDirectory(),filed

    26、ialog_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(

    27、filedialog_save.getFile()!=null) try File file=new File(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(); catch (IO

    28、Exception e2) 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); 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); public class E1 public static void main(String args) Myframe frame = new Myfr


    注意事项

    本文(JAVA文本文档的加密与解密.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开