加密解密件的设计与实现Word下载.docx

上传人:聆听****声音 文档编号:961688 上传时间:2023-04-29 格式:DOCX 页数:20 大小:89.16KB
下载 相关 举报
加密解密件的设计与实现Word下载.docx_第1页
第1页 / 共20页
加密解密件的设计与实现Word下载.docx_第2页
第2页 / 共20页
加密解密件的设计与实现Word下载.docx_第3页
第3页 / 共20页
加密解密件的设计与实现Word下载.docx_第4页
第4页 / 共20页
加密解密件的设计与实现Word下载.docx_第5页
第5页 / 共20页
加密解密件的设计与实现Word下载.docx_第6页
第6页 / 共20页
加密解密件的设计与实现Word下载.docx_第7页
第7页 / 共20页
加密解密件的设计与实现Word下载.docx_第8页
第8页 / 共20页
加密解密件的设计与实现Word下载.docx_第9页
第9页 / 共20页
加密解密件的设计与实现Word下载.docx_第10页
第10页 / 共20页
加密解密件的设计与实现Word下载.docx_第11页
第11页 / 共20页
加密解密件的设计与实现Word下载.docx_第12页
第12页 / 共20页
加密解密件的设计与实现Word下载.docx_第13页
第13页 / 共20页
加密解密件的设计与实现Word下载.docx_第14页
第14页 / 共20页
加密解密件的设计与实现Word下载.docx_第15页
第15页 / 共20页
加密解密件的设计与实现Word下载.docx_第16页
第16页 / 共20页
加密解密件的设计与实现Word下载.docx_第17页
第17页 / 共20页
加密解密件的设计与实现Word下载.docx_第18页
第18页 / 共20页
加密解密件的设计与实现Word下载.docx_第19页
第19页 / 共20页
加密解密件的设计与实现Word下载.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

加密解密件的设计与实现Word下载.docx

《加密解密件的设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《加密解密件的设计与实现Word下载.docx(20页珍藏版)》请在冰点文库上搜索。

加密解密件的设计与实现Word下载.docx

清华大学出版社,2006. [3]方敏,张彤.网络应用程序设计.西安:

电子科技大学出版社,2005. [4]黄超.Windows下的网络编程.北京:

人民邮电出版社,2003. 指导教师(签字):

教研室主任(签字):

批准日期:

年 月 日

随着计算机的应用和网络技术的不断发展,网络间的通讯量不断的加大,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。

文件的加密主要是由加密算法实现,加密算法有多种,常见的有RSA、DES、MD5等。

本程序设计对文件的加密使用的

是DES加密算法。

DES是分块加密的。

DES用软件进行解码需要用很长时间,而用硬件解码速度非常快,1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。

所以,当时DES被认为是一种十分强壮的加密方法。

但今天,只需二十万美元就可以制造一台破译DES的特殊的计算机,所以现在 DES 对要求“强壮”加密的场合已经不再适用了。

Java语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结构中立、解释执行、高性能、分布式和动态等主要特点。

利用Java语言中秘密密钥工厂对DES算法的支持,使程序实现文件加密、解密两大功能更简单。

本程序设计所采用的就是DES算法。

同时利用Java的GUI编程,生成文本对话框,对文件的路径进行选择、提供密钥框、加密和解密按钮。

使用本程序可以对txt,word等多种文件进行加密解密,使用便捷实用,功能完善,满足了用户对文件安全性的需求。

关键词:

JAVA,DES, 加密, 解密。

第I页

目录

一、题目分析 1

1.1课程设计的要求和内容 1

1.2DES算法描述 1

二、概要设计 3

2.1抽象数据类型的定义 3

2.1.1程序所需要引入的包 3

2.1.2其他定义 3

2.2主程序流程图 4

2.3各程序模块之间的层次(调用)关系 4

三、详细设计 6

3.1窗体的设计与实现 6

3.2文件导入模块 7

四、测试分析与结果 8

4.1.测试结果 8

4.1.1运行程序 8

4.1.2加密 8

4.1.3解密 10

总 结 12

参考文献 13

附 录 14

第II页

课程设计说明书(论文)用纸

一、题目分析

1.1课程设计的要求和内容

基本要求:

1.利用某种加密算法对指定的文本文件进行加密(应判断其是否已经加密,若已加密则结束该步骤,否则提示输入加密口令,对文件进行加密);

2.加密解密方法:

本设计采用DES加密算法。

3.还应该提供解密功能。

1.2DES算法描述

DES(dataencryptionStandard)是一种世界标准的加密形式,已经15年历史了,虽然有些老,可还算是比较可靠的算法。

在七十的初期,随着计算机之间的通信发展,需要有一种标准密码算法为了限制不同算法的激增使它们之间不能互相对话。

为解决这个问题,美国国家安全局(N.S.A)进行招标。

I.B.M公司开发了一种算法,称为:

Lucifer。

经过几年的研讨和修改,这种算法,成为了今天的D.E.S,1976年11月23日,终于被美国国家安全局采用。

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为解密,则用

第17页共17页

Key对密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES

的输出结果。

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

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

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

随着计算机网络的发展,加密技术也在迅速的发展中,加密解密技术的实现主要靠性能好的加密算法,而DES就是在实践中被证明的很好的算法,目前此算法已被广泛运用,且在使用中有了一些改进,DES算法给网络文件带来了可靠的安全性保证。

二、概要设计

2.1抽象数据类型的定义

2.1.1程序所需要引入的包

importjava.awt.*;

//包含用于创建用户界面和绘制图形图像的所有类。

importjava.awt.event.*;

//提供处理由AWT组件所激发的各类事件的接口和类。

importjavax.swing.*;

//提供一组“轻量级”(全部是Java语言)组件,尽量让这些组件在所有平台上的工作方式都相同。

importjava.io.*;

//通过数据流、序列化和文件系统提供系统输入和输出。

2.1.2其他定义

newBorderLayout() 对文件加密器对话框采用BorderLayout管理器。

newActionListener() 对文件的加密和解密设置事件监听器。

newButtonGroup() 定义一个按钮组。

newJRadioButton() 将此按钮设置为属于一个按钮组的成员。

newFileInputStream() 建立文件输入流以便进行文件的读操作,取其数据

newFileOutputStream() 建立文件输出流以便将数据写入文件

shu1 用整形数据保存该密钥。

开始运行程序

输入文件路径选中文件

写入或者输出

弹出文件加密器对话框

2.2主程序流程图

加密或解密

若为取出则在文本区中输出要取出的内容

若为写入则在文本区中输入要写入的内容

点击解密按钮,输入密钥,解密

点击加密按钮,生成密钥(记住)

完成

图2主程序流程图

2.3各程序模块之间的层次(调用)关系

模块定义

(1)主函数模块:

生成加密器框体;

获取数据的输入;

调用加密或解密函数。

(2)加密模块:

判断密钥是否合法和文件是否已加密,启动加密操作,显示操作结果,并在与

源文件同一文件夹下生成密文。

(3)加密操作模块:

用DES方法加密输入的字节并返回。

(4)解密模块:

判断密钥是否合法,启动解密操作,显示操作结果,并在指定的文件路径下生成明文。

(5)解密操作模块:

用DES方法解密输入的字节并返回。

三、详细设计

3.1窗体的设计与实现

窗体的总体布局包含按钮、画布、文本框、标签等,合理分布达到视觉的美感。

代码实现:

importjava.awt.event.*;

importjava.io.*;

publicclasskey加密extendsJFrame{intshu1;

JLabeljl1,jl2;

Stringcc;

JButtonqueding,xuanz,jiami,jiemi;

JTextFieldlujin,key;

JTextAreanr;

JRadioButtonqu,xie;

ButtonGroupfz;

Filef;

publickey加密(){

Containerc=getContentPane();

JPaneljp1=newJPanel();

jl1=newJLabel("

输入路径"

);

lujin=newJTextField(15);

xuanz=newJButton("

选择"

jp1.add(jl1);

jp1.add(lujin);

jp1.add(xuanz);

c.add(jp1,BorderLayout.NORTH);

nr=newJTextArea();

c.add(newJScrollPane(nr),BorderLayout.CENTER);

qu=newJRadioButton("

写入"

xie=newJRadioButton("

取出"

true);

fz=newButtonGroup();

fz.add(qu);

fz.add(xie);

jl2=newJLabel("

密钥"

key=newJTextField(15);

jiami=newJButton("

加密"

jiemi=newJButton("

解密"

JPaneljp4=newJPanel();

jp4.setLayout(newGridLayout(2,1,5,5));

JPaneljp2=newJPanel();

jp2.add(jl2);

jp2.add(key);

jp2.add(jiami);

jp2.add(jiemi);

jp4.add(jp2);

JPaneljp3=newJPanel();

queding=newJButton("

确定"

jp3.add(qu);

jp3.add(xie);

jp3.add(queding);

jp4.add(jp3);

c.add(jp4,BorderLayout.SOUTH);

queding.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){

jian();

if(qu.isSelected())shuchu();

if(xie.isSelected())qu();

}});

3.2文件导入模块

实现目标文件的导入,通过选择按钮导入加密或解密的文件。

xuanz.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){

JFileChooserfileChooser=newJFileChooser();

//实例化文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

//设置文件选择模式,此处为文件和目录均可

if(fileChooser.showOpenDialog

(key加密.this)==JFileChooser.APPROVE_OPTION){//弹出文件选择器,并判断是否点击了打开按钮

StringfileName=fileChooser.getSelectedFile().getAbsolutePath();

//得到选择文件或目录的绝对路径

lujin.setText(fileName);

}

});

四、测试分析与结果

4.1.测试结果

4.1.1运行程序

首先在我机器E盘文件夹名为java1的文件夹离创建一个名为Example.doc

文档用做测试。

图4-1-1运行程序

运行程序弹出如图4-1-1对话框,然后进行文件选择

4.1.2加密

图4-1-2选择加密文件

根据需求,选择所要加密文件的路径,并打开选取文件

图4-1-3选取文件,在文本区中写入要加密的内容并单击加密按钮

图4-1-4该文件已被

4.1.3解密

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

图4-1-5选择要解密的文件

图4-1-6输入密码进行文件解密

图4-1-7点击解密按钮,得到明文

总 结

在本次课程设计过程中,本人主要是负责窗体设计与实现和目标文件的导入模块设计。

通过本组三个人的分工协作,完成了课程设计。

在完成设计期间,我通过不断网上搜集和查找有关书集和相关加密算法的介绍,进行认真而细致的学习,进而完成了此次课程设计模块的完成。

通过本次设计我们也较深入的了解了DES这个加密算法的原理与作用。

通过本次设计,我意识到了无论身在何处,团队的事情远远大于个人的事情。

学会团队合作才是未来在工作中实现自身价值的必备条件。

我想课程设计的目

的,并不仅仅让我们能把任务完成吧。

大概也有让我们积极合作,团结奋进的意思吧。

不管怎么说,我是在意识上还是在知识上都有了不小的提高。

懂得了,只有细心的做好每一个步骤,才能酝酿一个完美的结局。

本次课程设计得到了韩芳老师的精心指导,在老师的指点下和小组成员的共同努力下,一一克服细节上的所有问题,并让它成为合格的设计。

让本次任务顺顺利利的完成,在此谢谢韩老师的教导。

参考文献

人民邮电出版社,2006.

[2]耿祥义.Java2使用教程:

清华大学出版社,2006.

[3]方敏,张彤.网络应用程序设计.西安:

电子科技大学出版社,2005.

[4]黄超.Windows下的网络编程.北京:

人民邮电出版社,2003.

附 录

程序实现Java源代码importjava.awt.*;

JLabeljl1,jl2;

JTextFieldlujin,key;

JRadioButtonqu,xie;

fz=newButtonGroup();

fz.add(qu);

密钥"

jiami=newJButton("

jp2.add(jiemi);

//实例化文件选择器

fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

//设置文件选择模式,此处为文件和目录均可

(key加密.this)==JFileChooser.APPROVE_OPTION){//弹出文件选择器,并判断是否点击了打开按钮

jiemi.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){ObjectInputStreaminput;

try{

input=newObjectInputStream(newFileInputStream(lujin.getText()));

intmima=Integer.parseInt(key.getText());

AAac=(AA)input.readObject();

if(ac.getShu()==mima){nr.setText(ac.cc);

shuchu();

}else{

nr.setText("

错误的key"

}catch(Exceptione){

//e.printStackTrace();

无法解密"

}}});

jiami.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){AAa=newAA(nr.getText());

key.setText(a.shu+"

"

try{

ObjectOutputStreamoutput=newObjectOutputStream(newFileOutputStream(lujin.getText()));

output.writeObject(a);

output.flush();

output.close();

qu();

baocun();

必须选择加密文件保存地址,文件不存在或者无法加密文件,

加密文件不能含有换行"

setSize(380,350);

setVisible(true);

publicvoidjian(){

f=newFile(lujin.getText());

f.createNewFile();

}catch(IOExceptione){JOptionPane.showMessageDialog(null,"

路径错误"

}}

publicvoidshuchu(){try{

FileOutputStreamout=newFileOutputStream(f);

bytebuf[]=nr.getText().getBytes();

try{out.write(buf);

out.flush();

out.close();

}catch(IOExceptione){

}catch(FileNotFoundExceptione){

publicvoidqu(){try{

FileInputStreamin=ne

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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