视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Java 加密与解密
2025-09-28 02:08:43 责编:小OO
文档
东华理工大学信息工程学院《JAVA程序设计》

课程设计报告

课程设计名称加密与解密

专业计算机科学与技术班级

学号

姓名2014年6 月19日

目录

一、设计任务与要求 (2)

1.设计题目 (2)

2.设计目的 (2)

3.设计要求 (2)

二、程序功能简介 (2)

三、主要内容 (2)

1.设计分析 (2)

2.程序结构 (3)

3.各模块的功能及程序说明 (4)

4.操作方法 (5)

四、核心代码及试验结果 (5)

1.窗口事件 (5)

2.加密操作模块 (6)

3.解密操作模块 (9)

五、收获与体会 (10)一、设计任务与要求

1.设计题目

加密与解密

要求:采用图形用户界面

(1)给定任意一个文本文件,进行加密,生成另一个文件。

(2)对加密后的文件还原。

2.目的

(1)复习、巩固Java语言的基础知识,加深对Java语言的理解和掌握;

(2)课程设计为学生提供了一个既动手又动脑,实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力;

(3)培养学生在项目开发中团队合作精神、创新意识及能力。

3.要求

(1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;

(2)系统设计要实用,编程简练,可用,功能全面

(3)说明书、流程图要清楚

(4)锯齿型书写格式,要求上机调试通过和按设计报告格式。

(5)设计上交内容:设计报告一份(按格式书写);源程序文件。

二、程序功能简介

通过编程,实现“加密与解密”功能。给定任意一个文本文件,进行加密,生成另一个文件。对加密后的文件还原。

三、主要内容

1.设计分析

分析如下:

1.向图形用户界面中添加组件。

2.设置各个组件的布局。

3.添加窗口事件。

4.查找读入及写入文件,并显示。

5.加密功能实现。

6.解密功能实现。

2.程序结构

3.各模块的功能及程序说明

图形用户界面模块:

开始

点击浏览

读取文件

输入密钥

密钥非空

Y

N

加/解密

是否存在此文件的加/解密文件

N

加/解密成功 N

Y

图1 程序流程

添加各种所需组件,设置窗口事件。 加密操作模块:

根据选择的文本文件,在浏览窗口中显示后,进行加密,显示在“文本浏览窗口”中。

解密操作模块:

同加密模块一样,由密文的保存路径,打开,进行解密,显示在“文本浏览窗口”中。

文件选择模块:

选择需要加密或解密的文件。 文件保存模块:

选择保存路径,保存需要加密或解密的文件。

4.操作方法

根据以上各程序模块的定义,可以大致画出各模块的层次调用关系,由文件加密器模块开始调用,直到解密模块调用为止。如下图2-2-2所示

四、核心代码及试验结果 1.窗口事件 窗口事件的代码实现:

文件加密器模块

文件选择模块 加密操作模块 文件保存模块

解密操作模块

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

}

2.加密操作模块

本程序采用简单的加密算法,即把从文本区获得的文本文件,初始化,存放到一个数组中,然后进行异或运算,把结果重新存放于该数组中,从而显现在“文件浏览窗口”中。

代码实现:

if(e.getSource()==button1)

{

char a[]=texta.getText().toCharArray();/*把texta中获得的文本,进行初始化,与原字符串长度相等,并将该字符串对象的全部字符复制到该数组a[]中*/

texta.setText(null);

int n;

char secret=' ';

for(int i=0;i{

char c=(char)(secret^a[i]);//进行异或运算

texta.append(""+c);

}

}

图二、路径为空时弹出上页面

图三、未输入密钥时弹出上界面

图四、条件满足,点击加密按钮时,弹出上界面

图五、已经存在此文件的加密文件时,准备再次加密时弹出上界面

3.解密操作模块

解密操作其实同加密操作相同,依旧首先打开加密后的文件,使其显示在文本区中,再同样对数组里的元素进行初始化,进行异或运算,即可得到解密后的文件,再显示到“文件浏览窗口”中。

入口参数:指定文件路径

代码实现:

if(e.getSource()==button2)

{

char a[]=texta.getText().toCharArray();

texta.setText(null);

int n;

char secret=' ';

for(int i=0;i{

char c=(char)(secret^a[i]);//再次异或运算,即还原

texta.append(""+c);

}

}

图六、条件满足,点击解密按钮时,弹出上界面

图七、已经存在选中文件的解密文件,试图再次解密时,弹出上界面

五、收获与体会

通过这次课程设计,我学到了很多。以前只是学书本上的内容,没有自己动手设计做一个东西,开始做课程设计才发现,一个看似简单的加密与解密,做起来还是很难的,这可能也是因为自己以前没有试着去做的原因吧!通过这次课程设计,我要用自己学到的知识应用到生活中去编程,去实践,这样才能把书本上的东西,用于生活,感觉到学编正的意义。这次实验,觉得有些知识虽然讲课的时候觉得懂了,但是真正去应用时,却不知道该怎么用。比如一个类的程序段,什么时候该用内部类什么时候该用外部类,该怎么去判断。什么样的变量可以在哪个部分去调用,都需要我们在实践应用中去加强认识,还是要通过自己动手写程序,才知道如何灵活运用。

通过本次的课程设计,我也知道了在Java编程中,许多自身存在的不足,就仅仅在加密解密这个简单的编程,我也需要做的还非常多,我现在只是学到了它的一点皮毛而已,所以还需多多努力。下载本文

显示全文
专题