加密解密软件的设计与实现.doc_第1页
加密解密软件的设计与实现.doc_第2页
加密解密软件的设计与实现.doc_第3页
加密解密软件的设计与实现.doc_第4页
加密解密软件的设计与实现.doc_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计任务书 20102011 学年第二学期 专业: 计算机科学与技术 学号: 080101010 姓名: 刘海坤 课程设计名称:计算机网络课程设计 设计题目: 加密解密软件的设计与实现 完成期限:自 2011 年 6 月 21 日至 2011 年 6 月 26 日共 1 周 设计目的: 本程序设计所采用的就是 DES 算法,同时利用 Java 的 GUI 编程,生 成文本对话框,对文件的路径进行选择、提供密钥框、加密和解密按钮。 功能要求:根据DES 算法,设计加密解密软件来为各种文件加密解密。 1 1、设计的任务:根据设计整体需求,本人负责窗体的设计与实现和目标文件的 导入模块。 2 2、进度安排: 序号阶段内容所需时间 1布置任务及调研2 天 2系统分析与设计2 天 3调试及报告撰写3 天 合 计7 天 3 3、主要参考资料: 1 谢希仁.计算机网络教程.北京: 人民邮电出版社,2006. 2 耿祥义.Java2 使用教程: 清华大学出版社,2006. 3 方敏,张彤.网络应用程序设计.西安:电子科技大学出版社,2005. 4 黄超.Windows 下的网络编程.北京:人民邮电出版社,2003. 指导教师(签字): 教研室主任(签字): 批准日期: 年 月 日 第 I 页 摘摘 要要 随着计算机的应用和网络技术的不断发展,网络间的通讯量不断的加大, 人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护, 文件加密技术也就随之产生。文件的加密主要是由加密算法实现,加密算法 有多种,常见的有 RSA、DES、MD5 等。本程序设计对文件的加密使用的 是 DES 加密算法。 DES 是分块加密的。DES 用软件进行解码需要用很长时间,而用硬件解 码速度非常快,1977 年,人们估计要耗资两千万美元才能建成一个专门计 算机用于 DES 的解密,而且需要 12 个小时的破解才能得到结果。所以,当 时 DES 被认为是一种十分强壮的加密方法。但今天, 只需 二十万美元就可 以制造一台破译 DES 的特殊的计算机,所以现在 DES 对要求“强壮”加密 的场合已经不再适用了。 Java 语言具有简单、安全、可移植、面向对象、健壮、多线程、体系结 构中立、解释执行、高性能、分布式和动态等主要特点。利用 Java 语言中 秘密密钥工厂对 DES 算法的支持,使程序实现文件加密、解密两大功能更简 单。 本程序设计所采用的就是 DES 算法。同时利用 Java 的 GUI 编程,生成 文本对话框,对文件的路径进行选择、提供密钥框、加密和解密按钮。 使用本程序可以对 txt,word 等多种文件进行加密解密,使用便捷实用, 功能完善,满足了用户对文件安全性的需求。 关键词:关键词:JAVA , DES, 加密, 解密。 第 II 页 目目 录录 一、题目分析一、题目分析.1 1.1 课程设计的要求和内容.1 1.2 DES 算法描述.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 课程设计说明书(论文)用纸 第 1 页 共 17 页 一、题目分析一、题目分析 1.11.1 课程设计的要求和内容课程设计的要求和内容 基本要求: 1.利用某种加密算法对指定的文本文件进行加密(应判断其是否已经加密, 若已加密则结束该步骤,否则提示输入加密口令,对文件进行加密) ; 2.加密解密方法:本设计采用 DES 加密算法。 3.还应该提供解密功能。 1.21.2 DESDES 算法描述算法描述 DES ( data encryption Standard) 是一种世界标准的加密形式,已经 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 为解密,则用 课程设计说明书(论文)用纸 第 2 页 共 17 页 Key 对密码形式的数据 Data 解密,还 原为 Data 的明码形式(64 位)作为 DES 的输出结果。 在通信网络的两端,双方约定了一致的 Key,在通信的源点用 Key 对核心 数据进行 DES 加密 ,然后以密码形式通过公共通信网(如电话网)传输到通信 网络的终点,数据达到目的 地后,用同样的 Key 对密码数据进行解密,便再现 了明码形式的核心数据。这样便保证了核 心数据(如 PIN,MAC 等)在公共通 信网中传输的安全性和可靠性。通过定期在通信网络的源 端和目的端同时改用 新的 Key,便能更进一步提高数据的保密性,这正是现在金融界交易网络的流行 作法。 随着计算机网络的发展,加密技术也在迅速的发展中,加密解密技术的实 现主要靠性能好的加密算法,而 DES 就是在实践中被证明的很好的算法,目前 此算法已被广泛运用,且在使用中有了一些改进,DES 算法给网络文件带来了 可靠的安全性保证。 课程设计说明书(论文)用纸 第 3 页 共 17 页 二、概要设计二、概要设计 2.12.1 抽象数据类型的定义抽象数据类型的定义 2.1.12.1.1 程序所需要引入的包程序所需要引入的包 import java.awt.*; /包含用于创建用户界面和绘制图形图像的所有 类。 import java.awt.event.*; /提供处理由 AWT 组件所激发的各类事件的接口 和类。 import javax.swing.*; /提供一组“轻量级” (全部是 Java 语言)组件, 尽量让这些组件在所有平台上的工作方式都相同。 import java.io.*; /通过数据流、序列化和文件系统提供系统输入和 输出。 2.1.22.1.2 其他定义其他定义 new BorderLayout() 对文件加密器对话框采用 BorderLayout 管理器。 new ActionListener() 对文件的加密和解密设置事件监听器。 new ButtonGroup() 定义一个按钮组。 new JRadioButton() 将此按钮设置为属于一个按钮组的成员。 new FileInputStream() 建立文件输入流以便进行文件的读操作,取其数据 new FileOutputStream() 建立文件输出流以便将数据写入文件 shu1 用整形数据保存该密钥。 课程设计说明书(论文)用纸 第 4 页 共 17 页 2.22.2 主程序流程图主程序流程图 图 2 主程序流程图 2.32.3 各程序模块之间的层次各程序模块之间的层次( (调用调用) )关系关系 模块定义 (1)主函数模块: 生成加密器框体;获取数据的输入;调用加密或解密函数。 (2)加密模块: 判断密钥是否合法和文件是否已加密,启动加密操作,显示操作结果,并在与 开始运行程序 弹出文件加密器对话框 输入文件路径选中文件 加密或解密 写入或者输出 若为写入则在文本区中 输入要写入的内容 若为取出则在文本区中 输出要取出的内容 点击加密按钮, 生成密钥(记住) 点击解密按钮, 输入密钥,解密 文件 完成 课程设计说明书(论文)用纸 第 5 页 共 17 页 源文件同一文件夹下生成密文。 (3)加密操作模块: 用 DES 方法加密输入的字节并返回。 (4)解密模块: 判断密钥是否合法,启动解密操作,显示操作结果,并在指定的文件路径下生 成明文。 (5)解密操作模块: 用 DES 方法解密输入的字节并返回。 课程设计说明书(论文)用纸 第 6 页 共 17 页 三、详细设计三、详细设计 3.13.1 窗体的设计与实现窗体的设计与实现 窗体的总体布局包含按钮、画布、文本框、标签等,合理分布达到视觉的 美感。 代码实现: import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class key 加密 extends JFrame int shu1; JLabel jl1,jl2; String cc; JButton queding, xuanz, jiami, jiemi; JTextField lujin,key; JTextArea nr; JRadioButton qu,xie; ButtonGroup fz; File f; public key 加密() Container c = getContentPane(); JPanel jp1 = new JPanel(); jl1 = new JLabel(输入路径); lujin = new JTextField(15); xuanz = new JButton(选择); jp1.add(jl1); jp1.add(lujin); jp1.add(xuanz); c.add(jp1, BorderLayout.NORTH); nr = new JTextArea(); c.add(new JScrollPane(nr), BorderLayout.CENTER); qu = new JRadioButton(写入); xie = new JRadioButton(取出, true); fz = new ButtonGroup(); fz.add(qu); fz.add(xie); jl2 = new JLabel(密钥); key = new JTextField(15); 课程设计说明书(论文)用纸 第 7 页 共 17 页 jiami = new JButton(加密); jiemi = new JButton(解密); JPanel jp4 = new JPanel(); jp4.setLayout(new GridLayout(2, 1, 5, 5); JPanel jp2 = new JPanel(); jp2.add(jl2); jp2.add(key); jp2.add(jiami); jp2.add(jiemi); jp4.add(jp2); JPanel jp3 = new JPanel(); queding = new JButton(确定); jp3.add(qu); jp3.add(xie); jp3.add(queding); jp4.add(jp3); c.add(jp4, BorderLayout.SOUTH); queding.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) jian(); if (qu.isSelected() shuchu(); if (xie.isSelected() qu(); ); 3.23.2 文件导入模块文件导入模块 实现目标文件的导入,通过选择按钮导入加密或解密的文件。 xuanz.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) JFileChooser fileChooser = new JFileChooser(); / 实例化文件选择器 fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); / 设 置文件选择模式,此处为文件和目录均可 if(fileChooser.showOpenDialog (key 加密.this)=JFileChooser.APPROVE_OPTION) / 弹出文件选择器,并判断 是否点击了打开按钮 String fileName=fileChooser.getSelectedFile().getAbsolutePath(); / 得到选择 文件或目录的绝对路径 lujin.setText(fileName); ); 课程设计说明书(论文)用纸 第 8 页 共 17 页 四、测试分析与结果四、测试分析与结果 4.1.4.1. 测试结果测试结果 4.1.14.1.1 运行程序运行程序 首先在我机器 E 盘文件夹名为 java1 的文件夹离创建一个名为 Example.doc 文档用做测试。 图 4-1-1 运行程序 运行程序弹出如图 4-1-1 对话框,然后进行文件选择 4.1.24.1.2 加密加密 图 4-1-2 选择加密文件 课程设计说明书(论文)用纸 第 9 页 共 17 页 根据需求,选择所要加密文件的路径,并打开选取文件 图 4-1-3 选取文件,在文本区中写入要加密的内容并单击加密按钮 图 4-1-4 该文件已被 课程设计说明书(论文)用纸 第 10 页 共 17 页 4.1.34.1.3 解密解密 解密操作中对文件选择,密码输入和加密操作是一样的。 图 4-1-5 选择要解密的文件 图 4-1-6 输入密码进行文件解密 课程设计说明书(论文)用纸 第 11 页 共 17 页 图 4-1-7 点击解密按钮,得到明文 课程设计说明书(论文)用纸 第 12 页 共 17 页 总总 结结 在本次课程设计过程中,本人主要是负责窗体设计与实现和目标文件的导 入模块设计。通过本组三个人的分工协作,完成了课程设计。在完成设计期间, 我通过不断网上搜集和查找有关书集和相关加密算法的介绍,进行认真而细致 的学习,进而完成了此次课程设计模块的完成。通过本次设计我们也较深入的 了解了 DES 这个加密算法的原理与作用。 通过本次设计,我意识到了无论身在何处,团队的事情远远大于个人的事情。 学会团队合作才是未来在工作中实现自身价值的必备条件。我想课程设计的目 的,并不仅仅让我们能把任务完成吧。大概也有让我们积极合作,团结奋进的 意思吧。不管怎么说,我是在意识上还是在知识上都有了不小的提高。懂得了, 只有细心的做好每一个步骤,才能酝酿一个完美的结局。 本次课程设计得到了韩芳老师的精心指导,在老师的指点下和小组成员的共 同努力下,一一克服细节上的所有问题,并让它成为合格的设计。让本次任务 顺顺利利的完成,在此谢谢韩老师的教导。 课程设计说明书(论文)用纸 第 13 页 共 17 页 参考文献参考文献 1 谢希仁.计算机网络教程.北京: 人民邮电出版社,2006. 2 耿祥义.Java2 使用教程: 清华大学出版社,2006. 3 方敏,张彤.网络应用程序设计.西安:电子科技大学出版社,2005. 4 黄超.Windows 下的网络编程.北京:人民邮电出版社,2003. 课程设计说明书(论文)用纸 第 14 页 共 17 页 附附 录录 程序实现 Java 源代码 import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class key 加密 extends JFrame int shu1; JLabel jl1, jl2; String cc; JButton queding, xuanz, jiami, jiemi; JTextField lujin, key; JTextArea nr; JRadioButton qu, xie; ButtonGroup fz; File f; public key 加密() Container c = getContentPane(); JPanel jp1 = new JPanel(); jl1 = new JLabel(输入路径); lujin = new JTextField(15); xuanz = new JButton(选择); jp1.add(jl1); jp1.add(lujin); jp1.add(xuanz); c.add(jp1, BorderLayout.NORTH); nr = new JTextArea(); c.add(new JScrollPane(nr), BorderLayout.CENTER); qu = new JRadioButton(写入); xie = new JRadioButton(取出, true); fz = new ButtonGroup(); fz.add(qu); fz.add(xie); jl2 = new JLabel(密钥); key = new JTextField(15); jiami = new JButton(加密); jiemi = new JButton(解密); JPanel jp4 = new JPanel(); jp4.setLayout(new GridLayout(2, 1, 5, 5); JPanel jp2 = new JPanel(); jp2.add(jl2); jp2.add(key); jp2.add(jiami); 课程设计说明书(论文)用纸 第 15 页 共 17 页 jp2.add(jiemi); jp4.add(jp2); JPanel jp3 = new JPanel(); queding = new JButton(确定); jp3.add(qu); jp3.add(xie); jp3.add(queding); jp4.add(jp3); c.add(jp4, BorderLayout.SOUTH); queding.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) jian(); if (qu.isSelected() shuchu(); if (xie.isSelected() qu(); ); xuanz.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) JFileChooser fileChooser = new JFileChooser(); / 实例化文件选择器 fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); / 设置文件选择模式,此处为文件和目录均可 if(fileChooser.showOpenDialog (key 加密.this) = JFileChooser.APPROVE_OPTION) / 弹出文件选择器,并判断 是否点击了打开按钮 String fileName=fileChooser.getSelectedFile().getAbsolutePath(); / 得到选择 文件或目录的绝对路径 lujin.setText(fileName); ); jiemi.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) ObjectInputStream input; try input = new ObjectInputStream(new FileInputStream(lujin.getText(); int mima = Integer.parseInt(key.getText(); AA ac = (AA) input.readObject(); if (ac.getShu() = mima) nr.setText(ac.cc); shuchu(); else nr.setText(错误的 key); catch (Exception e) / e.printStackTrace(); nr.setText(无法解密); ); 课程设计说明书(论文)用纸 第 16 页 共 17 页 jiami.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) AA a = new AA(nr.getText(); key.setText(a.shu + ); try ObjectOutputStream output = new ObjectOutputStream( new FileOutputStream(lujin.getText(); output.writeObject(a); output.flush(); output.close(); qu(); baocun(); catch (Exception e) / e.printStackTrace(); nr.setText(必须选择加密文件保存地址,文件不存在或者无法加密文件, 加密文件不能含有换行); ); setSize(380, 350); setVisible(true); public void jian() f = new File(lujin.getText(); try f.createNewFile(); catch (IOException e) JOptionPane.showMessageDialog(null, 路径错误); public void shuchu() try FileOutputStream out = new FileOutputStream(f); byte buf = nr.getText().getBytes(); try out.write(buf); out.flush(); out.close(); catch (IOExc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论