课程设计(论文)任务书软件学院软件工程专业班一、课程设计(论文)题目加密与解密二、课程设计(论文)工作自年月日起至年月日止。
三、课程设计(论文) 地点:四、课程设计(论文)内容要求:1.本课程设计的目的(1)使学生巩固和提高Java编程技术(2)培养学生掌握程序设计的基本思路和方法;(3)加强学生研发、调试程序的能力;(4)培养学生分析、解决问题的能力;(5)提高学生的科技论文写作能力。
2.课程设计的任务及要求1)任务:(1)设计GUI界面的Hannoi塔,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。
;(2)有三个表示塔的对象,分别命名为A、B和C。
A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。
用户可以用鼠标拖动盘子,把A 塔上的盘子全部移动到另外两个塔中的任何一个塔上。
要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。
(3)用户也可以选择让程序自动演示。
选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。
2)创新要求:在基本要求达到后,可进行创新设计,增加功能和游戏趣味性。
3)课程设计论文编写要求(1)课程设计任务及要求(2)需求分析(3)设计思路--工作原理、功能规划(4)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。
(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。
(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)(7) 报告按规定排版打印,要求装订平整,否则要求返工;(8) 课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附录(代码及相关图片)(9)严禁抄袭,如有发现,按不及格处理。
4)答辩与评分标准:(1)考勤:10分;(2)程序检查:30分;(3)答辩回答问题:20分(3)课程设计报告:40分;5)参考文献:(1)《Java语言程序设计教程》邱桃荣机械工业出版社(2)《Java程序设计试验指导》陈轶姚晓昆清华大学出版社6)课程设计进度安排内容天数地点构思及收集资料7图书馆编码与调试5实验室撰写论文3图书馆、实验室学生签名:年月日课程设计(论文)评审意见(1)考勤(10分):优()、良()、中()、一般()、差();(2)程序检查(30分):优()、良()、中()、一般()、差();(3)答辩回答问题(20分):优()、良()、中()、一般()、差();(4)设计报告(40分):优()、良()、中()、一般()、差();评阅人:职称:讲师年月日前言 ......................................................................................................................................... - 3 -一、题目分析................................................................................................................................ - 5 -1.1课程设计的要求和内容(包括原始数据、技术要求、工作要求) (5)1.2相关知识介绍 (5)二、概要设计................................................................................................................................ - 9 -2.1抽象数据类型的定义 (9)2.2主程序流程 (9)2.3各程序模块之间的层次(调用)关系 (10)三、详细设计.............................................................................................................................. - 11 -3.1主函数模块 (11)3.2加密模块 (12)3.3加密操作模块 (13)3.4解密模块 (13)3.5解密操作模块 (15)3.6转换模块 (15)3.7文件选择模块 (16)3.8密码生成模块 (17)四、调试分析.............................................................................................................................. - 19 -4.1调试过程中遇到的问题 (19)4.2对设计与实现的回顾讨论和分析 (19)4.3算法的时空分析 (20)4.4经验和体会 (20)五、测试结果.............................................................................................................................. - 20 -5.1加密 (20)5.2解密 (22)六、主要参考资料 ...................................................................................................................... - 23 -七、附录 ..................................................................................................................................... - 23 -摘要随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。
文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。
本程序设计对文件的加密使用的是DES加密算法。
Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。
利用Java语言中秘密密钥工厂对DES算法的支持,使程序实现文件加密、解密两大功能更简单。
关键词:JAVA ; DES;加密;解密;前言DES ( data encryption Standard) 是一种世界标准的加密形式,已经15 年历史了,虽然有些老,可还算是比较可靠的算法。
在七十的初期, 随着计算机之间的通信发展,需要有一种标准密码算法为了限制不同算法的激增使它们之间不能互相对话。
为解决这个问题, 美国国家安全局(N.S.A ) 进行招标。
I.B.M 公司开发了一种算法,称为:Lucifer。
经过几年的研讨和修改, 这种算法, 成为了今天的D.E.S,1976 年11月23 日,终于被美国国家安全局采用。
D.E.S 是分块加密的,将明文分割成 64 BITS 的块, 然后它们一个个接起来。
它使用56位密钥对64位的数据块进行加密,并对64bits的数据块进行16轮编码。
与每轮编码时,一个48bits的“每轮”密钥值由56bits的完整密钥得出来。
DES用软件进行解码需要用很长时间,而用硬件解码速度非常快,1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。
所以,当时DES被认为是一种十分强壮的加密方法。
但今天,只需二十万美圆就可以制造一台破译DES的特殊的计算机,所以现在 DES 对要求“强壮”加密的场合已经不再适用了。
DES的唯一密码学缺点,就是密钥长度相对比较短,人们并没有放弃使用DES,而是想出了一个解决其长度问题的方法,即采用三重DES。
加密成为三步,而不是一步,每一步的密钥都不一样,这样爆破就比较复杂了,这样要找三个密钥,而不是一个,每个密钥有56 BITS,那样我们就有56 乘以三,等于168 Bits。
本程序设计所采用的就是DES的变种——三重DES算法。
同时利用Java的GUI编程,生成文本对话框,对文件的路径进行选择、提供密钥框、加密和解密按钮。
一、题目分析1.1课程设计的要求和内容(包括原始数据、技术要求、工作要求)基本要求:1.利用某种加密算法对指定的文本文件进行加密(应判断其是否已经加密,若已加密则结束该步骤,否则提示输入加密口令,对文件进行加密);2.加密解密方法:可使用RSA,DES,MD5等之一加密算法。
3.还应该提供解密功能。
1.2相关知识介绍1.2.1 DES算法描述DES是一种分组加密算法,他以64位为分组对数据加密。
64位一组的明文从算法的一端输入,64位的密文从另一端输出。
DES是一个对称算法:加密和解密用的是同一个算法(除密钥编排不同以外)。
密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽略)。
密钥可以是任意的56位数,且可以在任意的时候改变。
DES算法的入口参数有3个:Key,Data,Mode。
其中Key为8个字节共64位,是DES 算法的工作密钥;Data也为8个字节64位,是要被加密或解密的数据:Mode为DES的工作方式,有两种:加密或解密。
DES算法的工作过程:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;若Mode为解密,则用Key对密码形式的数据Data 解密,还原为Data的明码形式(64位)作为DES的输出结果。
在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES 加密,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。
这样便保证了核心数据(如PIN,MAC等)在公共通信网中传输的安全性和可靠性。
通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网络的流行作法。
简单地说,算法只不过是加密的一种基本技术,DES基本组建分组是这些技术的一种组合,他基于密钥作用于明文,这是众所周知的轮(round)。