JAVA文本文档的加密与解密Word文档格式.docx

上传人:b****4 文档编号:6333312 上传时间:2023-05-06 格式:DOCX 页数:22 大小:434.15KB
下载 相关 举报
JAVA文本文档的加密与解密Word文档格式.docx_第1页
第1页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第2页
第2页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第3页
第3页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第4页
第4页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第5页
第5页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第6页
第6页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第7页
第7页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第8页
第8页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第9页
第9页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第10页
第10页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第11页
第11页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第12页
第12页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第13页
第13页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第14页
第14页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第15页
第15页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第16页
第16页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第17页
第17页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第18页
第18页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第19页
第19页 / 共22页
JAVA文本文档的加密与解密Word文档格式.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JAVA文本文档的加密与解密Word文档格式.docx

《JAVA文本文档的加密与解密Word文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA文本文档的加密与解密Word文档格式.docx(22页珍藏版)》请在冰点文库上搜索。

JAVA文本文档的加密与解密Word文档格式.docx

本程序充分利用Java语言的特点,针对当下社会比较重视的文件加密,设计了本程序。

使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,

满足了用户对文件安全性的需求。

关键词:

JAVA;

加密;

解密;

一、课设任务及要求

任务:

图形化界面(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为解密,则用Key对密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

但是,重要的是本程序首先经“打开”菜单项,进入文件选择模块,读取字符流,输出文本文档后,在一个数组中,对字符进行异或运算,从而达到加密的效果。

在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。

这样便保证了核心数据(如PIN,MAC等)在公共通信网中传输的安全性和可靠性。

通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网络的流行作法。

  简单地说,DES算法只不过是加密的其中一种技术,通过一个初始置换,将明文分组分成左半部分和右半部分,各32位长。

然后进行16轮相同的运算,这些相同的运算被称为函数f,在运算过程中数据和密钥相结合。

经过16轮运算后左、右部分在一起经过一个置换(初始置换的逆置换),这样算法就完成了。

本程序虽然没有采用此算法,而是采用众所周知的与DES有相似之处的异或算法,实际上是降低了程序的复杂度,使其更清晰,但功能依旧很强大,可见优势也是很多的。

四、详细设计

4.1程序流程图

该程序的模块调用十分简单明了,所以主程序的运行也很清晰,以下就是主程序的详细流程图,如图4-1所示

图4-1流程图

4.2图形用户界面模块

在图形用户界面,设置两个面板,并分别设置显示其组件的布局。

设置两个菜单项,分别为“打开”和“保存”;

设置两个按钮,分别为“加密”和“解密”;

创建一个文本区,用一个标签注明“文件浏览窗口”,这就是整个图形用户界面。

此外,还添加了一个窗口事件windowClosing,可以关闭运行的程序。

窗口事件的代码实现:

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;

i<

a.length;

i++)

charc=(char)(secret^a[i];

//进行异或运算)

texta.append("

"

+c);

}

4.4解密操作模块

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

入口参数:

指定文件路径

if(e.getSource()==button2)

{

charc=(char)(secret^a[i]);

//再次异或运算,即还原

4.5文件保存模块

本程序最大的特点就是:

可以选择是否保存加密后的文本文件。

因为加密后的文件先显示在文本区中,之后选择菜单项“保存”,即可弹出“保存对话框”,进行查找写入文件,写入字符流,从而实现保存。

if(e.getSource()==itemSave)//查找写入的文件

filedialog_save.setVisible(true);

if(filedialog_save.getFile()!

=null)

try

{

Filefile=newFile(filedialog_save.getDirectory(),filedialog_save.getFile());

FileWritertofile=newFileWriter(file);

//写入字符流

BufferedWriterout=newBufferedWriter(tofile);

out.write(texta.getText(),0,(texta.getText()).length());

out.close();

tofile.close();

}

catch(IOExceptione2)

4.6文件选择模块

同上个文件保存模块类似,依旧在选择菜单项“打开”后,查找读入文件,读取字符流,弹出“打开对话框”,从而可实现获取文件。

出口值:

被选文件的路径

publicvoidactionPerformed(ActionEvente)//查找读入文件

{

if(e.getSource()==itemOpen)

filedialog_load.setVisible(true);

Strings;

if(filedialog_load.getFile()!

Filefile=newFile(filedialog_load.getDirectory(),filedialog_load.getFile());

FileReaderfile_reader=newFileReader(file);

//读取字符流

BufferedReaderin=newBufferedReader(file_reader);

while((s=in.readLine())!

texta.append(s+'

\n'

);

in.close();

file_reader.close();

catch(IOExceptione1)

五、运行调试与分析讨论

5.1加密

首先在我机器C盘文件夹名为1的文件夹离创建一个名为Example.txt文本文件用做测试。

运行程序,弹出如图5-1的对话框

图5-1运行程序

点击“文件”,选择“打开”,即弹出“打开”对话框,选择一个文本文件,如图5-2。

图5-2选择加密文件

选择文件后,即可在“文件浏览窗口”中显示文本的信息,点击“加密”按钮,即可在“文件浏览窗口”看到加密后的文件(如图5-3)。

图5-3生成加密文件

对加密后的密文进行保存,选择“文件”下的“保存”,即可弹出“保存”对话框,选择路径,即可保存,如图5-4和5-5所示。

图5-4保存加密文件

图5-5浏览加密文件

5.2解密

解密操作中对文件选择,密码输入和加密操作是一样的。

将刚刚加密的程序进行解密,打开密文文件,选择“加密与解密”窗口下“解密”按钮,点击,即可解密,如图5-6所示。

图5-6加密

5.3分析讨论

在程序设计之初,考虑的是如何实现DES算法,但发现DES算法对于本次小程序来说,的确过于繁琐,但当我们发现采用简化后的DES算法----异或算法也可实现本功能,所以以后大大减少了工作量,可以说用Java语言是程序实现的一个成功之处。

而且,我觉得随着科技的不断进步,Java语言的优越性会不断地被挖掘出来,因为Java语言也是有生命的,它是不断被人们的需求演变的越来越强大,这些,我觉得不言而喻。

但往后,我想只有在不断的使用以后才能体会到,在发现Java拥有秘密密钥工厂后更是感受到它的强大。

Java的JDK帮助文档对于使用Java编程是非常有帮助的,在我们编程过程中,遇到的一些不清楚的地方,都是靠它才得以解决,同时对Java语言的了解也更方便、深入了。

程序利用Java图形界面设计了一个方便用户操作的窗口,使得程序运行的时候更想是个封装好的运用程序,不过我知道离这个还是有很大距离的,而程序所要提升空间非常大,现在界面所能实现的也就几个操作而已。

但我们一致认为:

如果程序要再做的强大点,可以引入其他的加密算法共用户选择,还可以设计成同时对多个文件进行加密,不过这只能放到我们课下对此进行更深一步的研究了。

程序的每个模块实现的功能还算完整,层次间的调用还是比较清晰的,各个功能也得到了基本的实现。

算法的时空分析,其实就是指算法的空间复杂度(包括时间复杂度和空间复杂度),其作用:

时间复杂度是度量算法执行的时间长短;

而空间复杂度是度量算法所需存储空间的大小。

程序的时间复杂度理论上是算不出来的,必须经过必须上机运行测试才能知道。

但我们不可能也没有必要对每个算法都上机测试。

但我们可以知道本算法其实是DES算法的简化,所以,肯定只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了,并且,一个算法花费的时间与算法中语句的执行次数成正比例,DES对64位的明文分组进行操作,通过一个初始置换,将明文分组成左半部分Li和右半部分Ri,各32位长。

然后进行16轮完全相同的运算,本程序直接采用数组,对其中的字符循环异或,只需进行一轮,所以时间复杂度T(n)是比较小的。

空间复杂度O(n)也是一样的,它是对程序占用内存的分析,由公式T(n)=O(f(n))知,时间复杂度与空间复杂度均为O(n)。

六、设计体会与小结

这次课程设计的要求并不多,只要实现加密与解密功能,而且只需要采用一种加密算法,但是为了本次课程设计,我们组也搜索了大量的资料,并根据在课堂上,书本上,老师讲过的知识,结合自身主观和客观因素,制定了本次课程设计的目标,并齐心协力,完成了此次设计。

通过本次的课程设计,我们还知道了许多自身存在的不足,例如仅掌握了一种加密算法,但在日益发达的社会商业等领域,加密解密需要做的还非常多,并且Java领域博大精深,我们现在只是学到了它的一点皮毛而已,所以还需多多努力。

但是通过这些我还是学到了很多东西,先不说其他的,我最起码最基础的加密算法,而且以后可以运用到自己想要保密的文件当中去。

通过这次课程设计,我用JAVA语言实现,我这是我对JAVA语言有了根深的了解巩固了以前学到的知识,也学习到了新的知识,课程设计虽然暂告一个段落,但我们学习Java的步伐不会终止。

参考文献

(1)丁振凡.《Java语言实用教程》北京邮电大学出版社

(2)耿祥义.《Java2实用教程》清华大学出版社

(3)赵付青.《Java面向对象程序设计》国防工业出版社.

(4)耿祥义.《Java课程设计》清华大学出版社

附录源代码

importjava.awt.*;

importjava.awt.event.*;

importjava.io.*;

importjavax.swing.*;

classMyframeextendsFrameimplementsActionListener

FileDialogfiledialog_save,filedialog_load;

Buttonbutton1,button2;

Labellabel;

MenuBarbar;

Menumenu;

MenuItemitemOpen,itemSave;

TextAreatexta;

Myframe(Strings)//创建对话框

super(s);

texta=newTextArea(38,160);

button1=newButton("

加密"

button2=newButton("

解密"

menu=newMenu("

文件"

itemOpen=newMenuItem("

打开"

itemSave=newMenuItem("

保存"

label=newLabel("

文件浏览窗口"

itemOpen.addActionListener(this);

itemSave.addActionListener(this);

button1.addActionListener(this);

button2.addActionListener(this);

filedialog_save=newFileDialog(this,"

保存文件对话框"

FileDialog.SAVE);

filedialog_load=newFileDialog(this,"

打开文件对话框"

FileDialog.LOAD);

filedialog_save.addWindowListener(newWindowAdapter()

filedialog_save.setVisible(false);

filedialog_load.addWindowListener(newWindowAdapter()

filedialog_load.setVisible(false);

Boxbox1=Box.createHorizontalBox();

//创建一个从左到右显示其组件的box1;

Boxbox2=Box.createVerticalBox();

//创建一个从上到下显示其组件的box2;

Boxbox3=Box.createVerticalBox();

Boxboxbase=Box.createVerticalBox();

Panelpanel1=newPanel();

Panelpanel2=newPanel();

setMenuBar(bar=newMenuBar());

bar.add(menu);

menu.add(itemOpen);

menu.add(itemSave);

panel1.add(button1);

panel1.add(button2);

box1.add(panel1);

box2.add(label);

panel2.add(texta);

box3.add(panel2);

boxbase.add(box1);

boxbase.add(box2);

boxbase.add(box3);

add(boxbase);

setLayout(newFlowLayout());

setBounds(100,0,1200,750);

setVisible(true);

addWindowListener(newWindowAdapter()

}//“关闭”窗口事件;

publicvoidactionPerformed(ActionEvente)//查找读入文件

if(e.getSource()==itemSave)//查找写入的文件

if(e.getSource()==button1)

//进行异或运算

if(e.getSource()==button2)

}

publicclassE1

publicstaticvoidmain(Stringargs[])

Myframeframe=newMyfr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2