文本文档地加密与解密课程设计说明书

上传人:痛*** 文档编号:99914684 上传时间:2022-06-01 格式:DOC 页数:15 大小:641.50KB
返回 下载 相关 举报
文本文档地加密与解密课程设计说明书_第1页
第1页 / 共15页
文本文档地加密与解密课程设计说明书_第2页
第2页 / 共15页
文本文档地加密与解密课程设计说明书_第3页
第3页 / 共15页
点击查看更多>>
资源描述
word*实践教学* 理工大学计算机与通信学院2014年春季学期 工程开发综合训练 课程设计题 目: 文本文档的加密与解密 专业班级: 计算机科学与技术11级4班姓 名: 有刚 学 号: 11240417 指导教师: 树群 成 绩: 13 / 15目 录摘要11.问题描述22.系统设计33.系统实现44.系统测试85.总结13参考文献14摘 要随着网络技术的不断开展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。但是这些算法虽然原理简单,但具体实现起来却非常繁琐复杂,故而本程序设计对文件的加密使用的是最根底的异或加密算法。Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。Java确实具备了“一次写成,处处运行的特点,所以,Java已经成为网络时代最重要的编程语言之一。本程序充分利用Java语言的特点,针对当下社会比拟重视的文件加密,设计了本程序。使用本程序可以对txt,word等多种文件进展加密解密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。关键词 : JAVA ,加密,解密1. 问题描述本设计要求学生开发一个在Windows操作系统下,利用DES加密算法,开发出一款能够对文本信息进展加密与解密的软件。通过对文本信息特点的分析,设计出相应的DES加密算法,同时,根据DES加密过程设计出解密算法,画出相应的流程图,实现对文本文件的加密和解密,写出软件说明书,并提出日后的升级维护意见。此外,学生通过该题目的设计过程,可以初步应用软件系统的开发原理和开发方法,全面培养软件开发过程中的分析、设计、编码、测试与文档规书写的能力,得到软件工程的训练,提高解决实际问题的能力。1用图形用户界面实现软件界面,整体布局合理,美观大方。2用56位秘钥对文本进展加解密。3能够对一般的文本文件包括扩展名为doc和txt的文件进展直接加解密。 4能够实现对中英文文本的加解密。5系统的开发可以采用Java或C+等编程语言来实现;(6) 在根本要求达到后,可进展创新设计,如改善算法性能、友好的人机界面。2. 系统设计该程序的模块调用十分简单明了,所以主程序的运行也很清晰,以下就是主程序的详细流程图,如图4-1所示开始弹出文件加密器对话框点击“文件菜单下的“打开,获得文件对显示在浏览窗口的“文件加密生成加密文件点击“保存,选择路径,生成新文件,并以“.txt命名点击“文件菜单下的“打开,获得加密后的文件对显示在浏览窗口的“文件解密生成解密文件完毕图4-1流程图各程序模块定义和层次关系模块定义主函数模块:生成加密器框体;获取数据的输入;调用加密或解密函数。加密模块:判断密钥是否合法和文件是否已加密,启动加密操作,显示操作结果,并在与源文件同一文件夹下生成密文。加密操作模块:用DES方法加密输入的字节并返回。解密模块:判断密钥是否合法,启动解密操作,显示操作结果,并在指定的文件路径下生成明文。解密操作模块:用DES方法解密输入的字节并返回。转换模块:转换模块一:输入密码的字符形式,返回字节数组形式。转换模块二:计算一个16进制字符的10进制值。文件选择模块:选择需要加密或解密的文件。密码生成模块:随机生成或用获得的密钥,用DES算法对密钥进展操作。3. 系统实现在图形用户界面,设置两个面板,并分别设置显示其组件的布局。设置两个菜单项,分别为“打开和“保存;设置两个按钮,分别为“加密和“解密;创建一个文本区,用一个标签注明“文件浏览窗口,这就是整个图形用户界面。 此外,还添加了一个窗口事件windowClosing,可以关闭运行的程序。窗口事件的代码实现:addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); );本程序采用简单的加密算法,即把从文本区获得的文本文件,初始化,存放到一个数组中,然后进展异或运算,把结果重新存放于该数组中,从而显现在“文件浏览窗口中。代码实现: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);文件保存模块本程序最大的特点就是:可以选择是否保存加密后的文本文件。因为加密后的文件先显示在文本区中,之后选择菜单项“保存,即可弹出“保存对话框,进展查找写入文件,写入字符流,从而实现保存。代码实现: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 FileWriter(file);/写入字符流BufferedWriter out=new BufferedWriter(tofile);out.write(texta.getText(),0,(texta.getText().length();out.close();tofile.close();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 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)4. 系统测试4.1加密 首先在计算机D盘文件夹名为aaaa的文件夹创建一个名为project文本文件用做测试。运行程序,弹出如图4-1的对话框图4-1运行程序点击“文件,选择“打开,即弹出“打开对话框,选择一个文本文件,弹出如图4-2的对话框。图 4-2选择加密文件选择你所要加密的文件后,打开文件弹出如图4-3的对话框图 4-3打开选择文件选择文件后,点击随机产生密码或自行输入所要求规格的密码,点击加密即可完成对文件的加密同时被保存,完成加密,弹出如图4-4的对话框。图 4-4 完成文件加密4.2 解密解密操作中对文件选择,密码输入和加密操作是一样的。将刚刚加密的程序进展解密,打开密文文件所在位置,弹出如图4-5的对话框。图 4-4 打开密文文件输入你所设计的密码如图4-5图 4-5查找点击被加密的文件project,弹出如图4-6的对话框图4-6 选择加密文件选择所加密文件,点击解密进展,完成解密,弹出如图4-7的对话框图4-7 解密成功5. 总结这次课程设计的要求并不多,只要实现加密与解密功能,而且只需要采用一种加密算法,但是为了本次课程设计,我们组也搜索了大量的资料,并根据在课堂上,书本上,教师讲过的知识,结合自身主观和客观因素,制定了本次课程设计的目标,并齐心协力,完成了此次设计。通过本次的课程设计,我们还知道了许多自身存在的不足,例如仅掌握了一种加密算法,但在日益兴旺的社会商业等领域,加密解密需要做的还非常多,并且Java领域博大精深,我们现在只是学到了它的一点皮毛而已,所以还需多多努力。但是通过这些我还是学到了很多东西,先不说其他的,我最起码最根底的加密算法,而且以后可以运用到自己想要的文件当中去。通过这次课程设计,我用JAVA语言实现,我这是我对JAVA语言有了根深的了解巩固了以前学到的知识,也学习到了新的知识,课程设计虽然暂告一个段落,但我们学习Java的步伐不会终止。在程序设计之初,考虑的是如何实现DES算法,但发现 DES算法对于本次小程序来说,确实过于繁琐,但当我们发现采用简化后的DES算法-异或算法也可实现本功能,所以以后大大减少了工作量,可以说用Java语言是程序实现的一个成功之处。Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。而且,我觉得随着科技的不断进步,Java语言的优越性会不断地被挖掘出来,因为Java语言也是有生命的,它是不断被人们的需求演变的越来越强大,这些,我觉得不言而喻。但往后,我想只有在不断的使用以后才能体会到,在发现Java拥有秘密密钥工厂后更是感受到它的强大。Java的JDK帮助文档对于使用Java编程是非常有帮助的,在我们编程过程中,遇到的一些不清楚的地方,都是靠它才得以解决,同时对Java语言的了解也更方便、深入了。参考文献1. 邓安文. 密码学加密演算法M.: 水利水电, 2. 波. 现代密码学第2版M. 清华大学, 2007. 3. 斯廷森Stinson,D.R.著,登国等译. 密码学原理与实践第三版M. 电子工业, 2009.4. Liberty J. Programming C#: Building. Net applications with C#M. OReilly Media, 2009.5. 仕斌等. 应用密码学M. 电子科技大学, 2009.6. 广彬,孟红蕊,永宝. C+课程设计案例精编M. 清华大学,2005.7. 朱喜福. C+程序设计M. 人民邮电,2005.8. 宛延闿. 实用C+程序设计教程M. 机械工业,2006.9. Hejlsberg A, Wiltamuth S, and Golde P. The C# programming languageM. Addison-Wesley Professional, 2006.10. Savitch W. Problem solving with C+M. Addison-Wesley Publishing pany, 2008.
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!