Java课程设计报告 加密和解密
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录:
前言 (1)
一、题目分析 (2)
1.1课程设计的要求和内容(包括原始数据、技术要求、工作要求) (2)
1.2 团队任务分析 (2)
1.3相关知识介绍 (2)
二、概要设计 (3)
2.1抽象数据类型的定义 (3)
2.2各程序模块之间的层次(调用)关系 (4)
三、详细设计 (5)
3.1程序流程图 (5)
3.2图形用户界面模块 (6)
3.3加密操作模块 (7)
3.4解密操作模块 (7)
3.5文件保存模块 (7)
3.6文件选择模块 (8)
四、调试分析 (9)
4.1对设计与实现的回顾讨论和分析 (10)
4.2算法的时空分析 (11)
4.3经验和体会 (12)
五、测试结果 (12)
5.1加密 (12)
5.2解密 (15)
六、主要参考资料 .......................................................................................... - 16 -
七、附录......................................................................................................... - 16 -
前言
随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。但是这些算法虽然原理简单,但具体实现起来却非常繁琐复杂,故而本程序设计对文件的加密使用的是最基础的异或加密算法。
Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。Java是一门很优秀的编程语言,是目前软件设计中极为健壮的编程语言。Java不仅可以用来开发大型的应用程序,而且特别适合于Internet的应用开发。Java确实具备了“一次写成,处处运行”的特点,所以,Java已经成为网络时代最重要的编程语言之一。本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。
使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,
满足了用户对文件安全性的需求。
关键词:
JA V A ;加密;解密;
一、题目分析
1.1课程设计的要求和内容(包括原始数据、技术要求、工作要求)
基本要求:
1.用图形用户界面实现,建立菜单。
2. 给定任意一个文本文件,进行加密,生成另一个文件。
3.对加密后的文件还原。
1.2团队任务分析
分析如下:
1.向图形用户界面中添加组件。
2.设置各个组件的布局。
3.添加窗口事件。
4. 查找读入及写入文件,并显示。
5.加密功能实现。
6.解密功能实现。
其中:团队成员及其负责的任务如下:
冯治波:图形用户界面
吴祎筱和陈冬姣:文本加密
高峻辉:文本的还原(解密)
1.3相关知识介绍
本程序采用传统的异或加密算法,没有采用DES算法,但对于世界上公认的DES是一种分组加密算法,是以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽略)。密钥可以是任意的56位数,且可以在任意的时候改变。本程序采用的算法与DES相同的一点是:
都是一个对称算法:及加密和解密用的是同一个算法。
我们也许知道公认的DES算法的工作过程,那就是:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;若Mode为解密,则用Key对密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。但是,重要的是本程序首先经“打开”菜单项,进入文件选择模块,读取字符流,输出文本文档后,在一个数组中,对字符进行异或运算,从而达到加密的效果。
在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核心数据(如PIN,MAC等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网络的流行作法。
简单地说,DES算法只不过是加密的其中一种技术,通过一个初始置换,将明文分组分成左半部分和右半部分,各32位长。然后进行16轮相同的运算,这些相同的运算被称为函数f,在运算过程中数据和密钥相结合。经过16轮运算后左、右部分在一起经过一个置换(初始置换的逆置换),这样算法就完成了。本程序虽然没有采用此算法,而是采用众所周知的与DES有相似之处的异或算法,实际上是降低了程序的复杂度,使其更清晰,但功能依旧很强大,可见优势也是很多的。
二、概要设计
2.1抽象数据类型的定义
2.1.1 程序所需要引入的包:
import java.awt.*; //包含用于创建用户界面和绘制图形图像的所有类。
import java.awt.event.*; //提供处理由AWT 组件所激发的各类事件