计算机与通信学院课程设计说明书文本文档的加密与解密作者:王念政学号:11700230专业:软件技术班级:软件二班指导教师:高玮军答辩时间:2012年6月25日此处写毕业设计的题目,黑体、小一、加粗华文行楷,加粗,28兰州理工大学课程设计2文本文档的加密与解密姓名:王念政学号:11700230摘要兰州理工大学课程设计3随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。但是这些算法虽然原理简单,但具体实现起来却非常繁琐复杂,故而本程序设计对文件的加密使用的是最基础的异或加密算法。Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。Java确实具备了“一次写成,处处运行”的特点,所以,Java已经成为网络时代最重要的编程语言之一。本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。关键词:JAVA;加密;解密;兰州理工大学课程设计1目录一、课设任务及要求....................................................................................................................................2二、需求分析................................................................................................................................................2三、设计思路................................................................................................................................................2四、详细设计................................................................................................................................................34.1程序流程图................................................................................................................34.2图形用户界面模块....................................................................................................44.3加密操作模块............................................................................................................54.4解密操作模块............................................................................................................54.5文件保存模块............................................................................................................64.6文件选择模块............................................................................................................7五、运行调试与分析讨论............................................................................................................................75.1加密....................................................................................................................75.2解密.................................................................................................................125.3分析讨论..................................................................................................................12六、设计体会与小结..................................................................................................................................13参考文献......................................................................................................................................................14兰州理工大学课程设计2一、课设任务及要求任务:图形化界面(GUI)编程,编写一个加密与解密程序要求:(1)采用图形用户界面(2)给定任意一个文本文件,进行加密,生成另一个文件(3)对加密后的文件还原(解密)二、需求分析基本要求:1.用图形用户界面实现,建立菜单。2.给定任意一个文本文件,进行加密,生成另一个文件。3.对加密后的文件还原。分析如下:1.向图形用户界面中添加组件。2.设置各个组件的布局。3.添加窗口事件。4.查找读入及写入文件,并显示。5.加密功能实现。6.解密功能实现。三、设计思路本程序采用传统的异或加密算法,没有采用DES算法,但对于世界上公认的DES是一种分组加密算法,是以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽略)。密钥可以是任意的56位数,且可以在任意的时候改变。本程序采用的算法与DES相同的一点是:都是一个对称算法:及加密和解密用的是同一个算法。我们也许知道公认的DES算法的工作过程,那就是:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;若Mode为解密,则兰州理工大学课程设计3用Key对密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。但是,重要的是本程序首先经“打开”菜单项,进入文件选择模块,读取字符流,输出文本文档后,在一个数组中,对字符进行异或运算,从而达到加密的效果。在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核心数据(如PIN,MAC等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网络的流行作法。简单地说,DES算法只不过是加密的其中一种技术,通过一个初始置换,将明文分组分成左半部分和右半部分,各32位长。然后进行16轮相同的运算,这些相同的运算被称为函数f,在运算过程中数据和密钥相结合。经过16轮运算后左、右部分在一起经过一个置换(初始置换的逆置换),这样算法就完成了。本程序虽然没有采用此算法,而是采用众所周知的与DES有相似之处的异或算法,实际上是降低了程序的复杂度,使其更清晰,但功能依旧很强大,可见优势也是很多的。四、详细设计4.1程序流程图该程序的模块调用十分简单明了,所以主程序的运行也很清晰,以下就是主程序的详细流程图,如图4-1所示兰州理工大学课程设计4图4-1流程图4.2图形用户界面模块在图形用户界面,设置两个面板,并分别设置显示其组件的布局。设置两个菜单项,分别为“打开”和“保存”;设置两个按钮,分别为“加密”和“解密”;创建一个文本区,用一个标签注明“文件浏览窗口”,这就是整个图形用户界面。此外,还添加了一个窗口事件windowClosing,可以关闭运行的程序。开始弹出文件加密器对话框点击“文件”菜单下的“打开”,获得文件对显示在浏览窗口的“文件”加密生成加密文件点击“保存”,选择路径,生成新文件,并以“.txt”命名点击“文件”菜单下的“打开”,获得加密后的文件对显示在浏览窗口的“文件”解密生成解密文件结束兰州理工大学课程设计5窗口事件的代码实现:addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}4.3加密操作模块本程序采用简单的加密算法,即把从文本区获得的文本文件,初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该数组中,从而显现在“文件浏览窗口”中。代码实现:if(e.getSource()==button1){chara[]=texta.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a[]中*/texta.setText(null);intn;charsecret='';for(inti=0;ia.length;i++){charc=(char)(secret^a[i];//进行异或运算)texta.append(+c);}}4.4解密操作模块解密操作其实同加密操作相同,依旧首先打开加密后的文件,使其显示在文本区中,再同样对数组里的元素进行初始化,进行异或运算,即可得到解密后的文件,再显示到“文件浏览窗口”中。入口参数:指定文件路径兰州理工大学课程设计6代码实现:if(e.getSource()==button2){chara[]=texta.getText().toCharArray();texta.setText(null);intn;charsecret='';for(inti=0;ia.length;i++){charc=(char)(secret^a[i]);//再次异或运算,即还原texta.append(+c);}}4.5文件保存模块本程序最大的特点就是:可以选择是否保存加密后的文本文件。因为加密后的文件先显示在文本区中,之后选择菜单项“保存”,即可