文件加密与解密—Java课程设计报告

合集下载

java文件加密解密课程设计

java文件加密解密课程设计
JTextArea nr;
JRadioButton qu, xie;
ButtonGroup fz;
File f;
public KeyPay() {
Container c = getContentPane();
JPanel jp1 = new JPanel();
jl1 = new JLabel("输入路径");
} catch (IOException e) {
// e.printStackTrace();
}
} catch (FileNotFoundException e) {
// e.printStackTrace();
}
}
public void qu() {
try {
FileInputStream in = new FileInputStream(f);
4.3详细设计
4.3.1类图
KeyPay
-shu1:String
-jl1 :JLabel
-jl2 :JLabel
-cc :String
-queding :JButton
-xuanz :JButton
-jiami :JButton
-jiemi :JButton
-lujin :JTextField
-key :JTextField
AA ac = (AA) input.readObject();
if (ac.getShu() == mima) {
nr.setText();
shuchu();
JOptionPane.showMessageDialog(null, "解密成功!");
} else {

java课程设计加密与解密实验报告

java课程设计加密与解密实验报告

java课程设计加密与解密实验报告尊敬的老师:我将向您汇报我的Java课程设计——加密与解密实验报告。

本次实验旨在通过Java程序设计实现一些传统加密算法的加密与解密功能,并进行简单的性能分析。

以下是我的实验报告:一、实验目的通过Java程序设计实现传统加密算法的加密与解密功能,了解加密算法的基础原理,并进行简单的性能分析。

二、实验内容本次实验的主要内容包括:1. 实现Caesar加密算法、Playfair加密算法和Vigenere加密算法的加密与解密功能。

2. 编写能够对文字文件进行加密与解密的Java程序。

3. 对比不同算法的加密与解密性能,进行简单的性能分析。

三、实验步骤1. Caesar加密算法Caesar加密算法是一种简单的字母替换加密方式,通过移动字母表中的字母来生成密文。

例如,如果移动三个字母,则"A"变成"D","B"变成"E",以此类推。

加密和解密使用相同的密钥,在本实验中为整数。

实现步骤如下:① 定义CaesarCipher类,此类中包含了加密与解密方法。

② 加密方法接收一个字符串和密钥,通过对字符串中的每个字母进行移动,生成密文。

③ 解密方法接收一个密文和密钥,通过对密文中的每个字母进行相反的移动,还原出明文。

2. Playfair加密算法Playfair加密算法是一种算法复杂度较高的加密方式,利用了一个5x5的矩阵来进行加密。

实现步骤如下:① 定义PlayfairCipher类,此类中包含了加密与解密方法。

② 加密方法接收一个字符串和密钥,将明文分组并替换成加密后的密文。

③ 解密方法接收一个密文和密钥,将密文分组并替换成还原出的明文。

3. Vigenere加密算法Vigenere加密算法是一种基于凯撒密码的加密算法,使用一个关键词来对明文进行加密。

实现步骤如下:① 定义VigenereCipher类,此类中包含了加密与解密方法。

加密解密课程设计

加密解密课程设计

兰州商学院陇桥学院工学系课程设计报告课程名称: Java 设计题目:加密与解密系别:工学系专业 (方向):信息管理与信息系统年级、班:2012级(2)班学生姓名:费亚芬学生学号:20120651208指导教师:张鑫2014年7 月1日目录一、系统开发的背景 (1)二、系统分析与设计 (1)(一)系统功能要求 (1)(二)系统模块结构设计 (2)三、系统的设计与实现 (2)(一)图形用户界面模块 (2)(二)加密操作模块 (3)(三)解密操作模块 (4)(四)文件保存模块 (4)(五)文件选择模块 (5)四、系统测试 (6)(一)测试加密 (6)(二)测试选择加密文件 (6)(三)测试生成加密文件 (6)(四)测试浏览加密文件 (7)(五)测试解密文件 (8)五、总结 (8)六、附件(代码、部分图表) (10)加密与解密一、系统开发的背景随着网络技术的不断发展,人们的个人信息、网络间的文件传递、电子商务等方面都需要大力的保护,文件加密技术也就随之产生。

文件的加密主要是由加密算法实现,加密算法有多种,本程序设计对文件的加密使用的是最基础的异或加密算法。

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

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

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

二、系统分析与设计(一)系统功能要求可以采用图形用户界面,给定任意一个文本文件,进行加密,生成另一个文件,然后对加密后的文件还原。

1、向图形用户界面中添加组件;2、设置各个组件的布局;3、添加窗口事件;4、查找读入及写入文件,并显示;5、加密功能实现;6、解密功能实现;(二)系统模块结构设计通过对系统功能的分析,加密与解密功能如图1所示。

图1 加密与解密功能图三、系统的设计与实现(一)图形用户界面模块分析:在图形用户界面,设置两个面板,并分别设置显示其组件的布局。

文件加密文件解密课程设计

文件加密文件解密课程设计

文件加密文件解密课程设计一、课程目标知识目标:1. 学生能理解文件加密与解密的基本概念,掌握相关的理论知识。

2. 学生能掌握至少两种文件加密与解密的方法,并了解其原理和适用场景。

3. 学生能了解加密技术在信息安全管理中的重要性。

技能目标:1. 学生能够运用所学知识,使用相关工具或编程语言实现文件的加密与解密。

2. 学生能够分析不同的加密场景,选择合适的加密方法进行操作。

3. 学生能够通过实际操作,提高解决问题的能力和动手实践能力。

情感态度价值观目标:1. 学生能够认识到信息安全的重要性,增强网络安全意识。

2. 学生能够培养团队协作精神,通过小组讨论和实践,共同解决问题。

3. 学生能够培养创新思维,积极探索加密技术在实际生活中的应用。

课程性质:本课程为信息技术课程,旨在让学生掌握文件加密与解密的基本知识,提高信息安全意识。

学生特点:学生为八年级学生,对信息技术有一定的基础,具备基本的计算机操作能力,对新鲜事物充满好奇。

教学要求:结合学生特点,采用理论讲解与实际操作相结合的方式进行教学,注重培养学生的动手实践能力和创新思维。

在教学过程中,关注学生的个体差异,鼓励学生积极参与,提高课堂互动性。

通过课程学习,使学生能够达到上述课程目标,并在实际生活中应用所学知识。

二、教学内容1. 文件加密与解密基本概念:讲解加密、解密的定义,介绍加密技术在信息安全中的作用。

- 教材章节:第三章第五节《加密与解密技术》- 内容列举:加密技术发展简史,加密算法分类,加密与解密的基本过程。

2. 常用加密算法介绍:讲解对称加密和非对称加密的原理,以AES和RSA算法为例,分析其优缺点及应用场景。

- 教材章节:第三章第六节《常见加密算法》- 内容列举:AES算法原理,RSA算法原理,加密算法在实际应用中的选择。

3. 文件加密与解密操作实践:指导学生使用相关工具或编程语言实现文件的加密与解密。

- 教材章节:第三章第七节《加密与解密工具的使用》- 内容列举:工具软件介绍,编程语言实现加密与解密,实际操作步骤。

文件加密与解密—Java课程设计报告

文件加密与解密—Java课程设计报告

文件加密与解密—Java课程设计报告JAVA课程设计题目:文件的加密与解密姓名:学号:班级: 日期:指导老师分数目录一、设计思路 (1)二、具体实现 (1)三、运行调试与分析讨论 (3)四、设计体会与小结 (7)五、参考文献 (8)六、附录 (8)一、设计思路自从Java技术出现以业,有关Java平台的安全性用由Java技术发展所引发的安全性问题,引起了越来越多的关注。

目前,Java 已经大量应用于各个领域,研究Java的安全性对于更好地利用Java具有深远的意义。

使用Java的安全机制设计和实现安全系统更具有重要的应用价值。

本课程设计,主要实践Java安全中的JCE模块,包括密钥生成,Cipher对象初始化、加密模式、填充模式、底层算法参数传递,也涉及文件读写与对象输入输出流。

二、具体实现本系统通过用户界面接收三个参数:明文文件、密文文件、口令。

采用DES加密算法,密码分组链(Cipher Block Chaining,CBC)加密模式,PKCS#5-Padding的分组填充算法。

因为CBC涉及到底层算法参数的解密密钥的传递,所以将明文文件中的字节块以密封对象(Sealed Object)的方式加密后,用对象流输出到密文文件,这样就将密文、算法参数、解密密钥三都密封到一个对象中了。

口令的hash值作为产生密钥的参数。

设计流程图如下所示:设计文件加密解密的界面实现hash算法,用于产生口令的hash值实现由口令hash值产生密钥的算法实现文件加密算法加密按钮事件实现文件解密算法解密按钮事件文件加密与解密设计流程图本系统中,包含Default,Shares,SecretKey,EncAndDec四个包共6个类组成。

定义的几个参数:MAX_BUF_SIZE为每次从文件中读取的字节数,也是内存缓冲区的大小;加密算法为DES;加密模式是密码分组链(CBC)模式;分组填充方式是PKCS#5Padding。

文件加解密课程设计

文件加解密课程设计

文件加解密课程设计一、课程目标知识目标:1. 让学生理解文件加密与解密的基本概念,掌握相关的理论知识。

2. 使学生掌握至少两种文件加密方法,并了解其适用场景和优缺点。

3. 让学生了解解密原理,学会运用相关工具进行文件解密。

技能目标:1. 培养学生运用所学知识,自主设计简单的文件加密与解密程序。

2. 提高学生分析问题、解决问题的能力,使学生能够针对不同场景选择合适的文件加密与解密方法。

3. 培养学生团队合作精神,学会在团队中分享观点、交流技巧。

情感态度价值观目标:1. 培养学生信息安全意识,认识到文件加密与解密的重要性,养成良好的信息安全素养。

2. 激发学生对计算机科学的兴趣,鼓励学生探索未知领域,培养创新精神。

3. 引导学生树立正确的价值观,遵循法律法规,不参与非法解密和破坏他人信息安全的行动。

课程性质:本课程为信息技术课程,旨在让学生掌握文件加密与解密的基本知识和技能,提高信息安全意识。

学生特点:学生处于初中年级,已具备一定的计算机操作能力,对新鲜事物充满好奇,但理论知识相对薄弱。

教学要求:结合学生特点,注重实践操作,以任务驱动法引导学生自主探究,培养学生的动手能力和解决问题的能力。

同时,注重理论知识讲解,让学生在实践过程中深入了解加密与解密原理。

在教学过程中,关注学生的情感态度价值观培养,引导他们树立正确的信息安全观念。

二、教学内容1. 文件加密与解密基本概念:介绍加密、解密的定义,阐述其作用和重要性,以课本第二章第一节内容为基础,让学生掌握信息安全的基本知识。

- 加密技术原理及分类- 解密技术原理及分类2. 常见文件加密方法:分析课本第二章第二节中提到的对称加密、非对称加密等加密方法,以实际案例讲解各自优缺点。

- 对称加密:如DES、AES等- 非对称加密:如RSA、ECC等3. 文件解密技术:结合课本第二章第三节内容,让学生了解解密原理,学习使用相关工具进行文件解密。

- 解密原理及步骤- 常用解密工具介绍4. 实践操作:根据课本第四章内容,设计以下实践项目:- 使用对称加密方法加密文件,并解密- 使用非对称加密方法加密文件,并解密- 分析不同场景下加密与解密的应用5. 文件加密与解密的安全问题:以课本第五章内容为基础,让学生了解文件加密与解密中可能遇到的安全问题,提高学生的信息安全意识。

Java课程设计(论文)-加密和解密

Java课程设计(论文)-加密和解密

Java课程设计(论文)-加密和解密课程设计(论文)任务书软件学院软件工程专业班一、课程设计(论文)题目加密与解密二、课程设计(论文)工作自年月日起至年月日止。

三、课程设计(论文) 地点:四、课程设计(论文)内容要求:1(本课程设计的目的(1)使学生巩固和提高Java编程技术(2)培养学生掌握程序设计的基本思路和方法;(3)加强学生研发、调试程序的能力;(4)培养学生分析、解决问题的能力;(5)提高学生的科技论文写作能力。

2(课程设计的任务及要求1)任务:(1)设计GUI界面的Hannoi塔,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。

;(2)有三个表示塔的对象,分别命名为A、B和C。

A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。

用户可以用鼠标拖动盘子,把A 塔上的盘子全部移动到另外两个塔中的任何一个塔上。

要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。

(3)用户也可以选择让程序自动演示。

选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。

2)创新要求:在基本要求达到后,可进行创新设计,增加功能和游戏趣味性。

3)课程设计论文编写要求(1)课程设计任务及要求(2)需求分析(3)设计思路--工作原理、功能规划(4)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。

(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。

(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。

(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式) (7) 报告按规定排版打印,要求装订平整,否则要求返工;(8) 课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附录(代码及相关图片)(9)严禁抄袭,如有发现,按不及格处理。

java文件的加密与解密

java文件的加密与解密

课程设计课程设计名称:Java课程设计专业班级:学生姓名:学号:指导教师:课程设计时间:2013.6.10-2013.6.21文件的加密与加密一、需求分析1.基本要求:1.实现文件的加密与解密。

2.使用GUI完成设计工作。

2.具体分析:1.向图形用户界面中添加组件,其中窗口中包括四个按钮,一个文本框,一个文本区。

2.设置各个组件的布局,其中文本框和加添加保存按钮在最上面,文本区在中间,加解密按钮在最下面。

3.添加窗口事件,其中包括添加事件、保存事件、加密事件和解密事件。

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

5.加密功能实现,其中已加密的文件不能重复加密。

6.解密功能实现,其中未加密的不能解密。

7.保存功能的实现二、概要设计图2-1设计模块图图2-2设计流程图三、运行环境、开发语言开发环境:JDK1.6开发语言:java语言四、详细设计1 程序清单表1程序清单2 主要代码2.1 主窗口显示功能此部分主要是主窗口界面,显示文本框、按钮和文本区。

该功能截图如图图4-1。

具体代码如下:Myframe(String s) {super(s);final JTextField namefield = new JTextField(15);namearea = new JTextArea(20,20);JPanel panel1 = new JPanel();JPanel panel2 = new JPanel();JButton button1 = new JButton("添加文件");JButton button2 = new JButton("保存");JButton button3 = new JButton("加密");JButton button4 = new JButton("解密");panel1.add(namefield);panel1.add(button1);panel1.add(button2);panel2.add(button3);panel2.add(button4);add(namearea,"Center");add(panel1, "North");add(panel2, "South");JScrollPane scrollPane=new JScrollPane(namearea);add(scrollPane);setSize(750, 600);setLocation(100, 100);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}图4-1 主界面2.2 添加文件功能单击“添加文件”按钮,可以选择不通知磁盘目录下的文件(.txt)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA课程设计题目:文件的加密与解密姓名:学号:班级: 日期:目录一、设计思路 (3)二、具体实现 (3)三、运行调试与分析讨论 (8)四、设计体会与小结 (11)五、参考文献 (12)六、附录 (12)一、设计思路自从Java技术出现以业,有关Java平台的安全性用由Java技术发展所引发的安全性问题,引起了越来越多的关注。

目前,Java已经大量应用于各个领域,研究Java的安全性对于更好地利用Java具有深远的意义。

使用Java的安全机制设计和实现安全系统更具有重要的应用价值。

本课程设计,主要实践Java安全中的JCE模块,包括密钥生成,Cipher对象初始化、加密模式、填充模式、底层算法参数传递,也涉及文件读写与对象输入输出流。

二、具体实现本系统通过用户界面接收三个参数:明文文件、密文文件、口令。

采用DES加密算法,密码分组链(Cipher Block Chaining,CBC)加密模式,PKCS#5-Padding的分组填充算法。

因为CBC涉及到底层算法参数的解密密钥的传递,所以将明文文件中的字节块以密封对象(Sealed Object)的方式加密后,用对象流输出到密文文件,这样就将密文、算法参数、解密密钥三都密封到一个对象中了。

口令的hash值作为产生密钥的参数。

设计流程图如下所示:文件加密与解密设计流程图本系统中,包含Default,Shares,SecretKey,EncAndDec四个包共6个类组成。

定义的几个参数:MAX_BUF_SIZE为每次从文件中读取的字节数,也是内存缓冲区的大小;加密算法为DES;加密模式是密码分组链(CBC)模式;分组填充方式是PKCS#5Padding。

包和类结构图如下所示:本课程设计,包和类结构图:以下为包中的类的方法实现说明Package Shares类结构图Package SecretKey类结构图Package EncAndDec类结构图图1 文件加密流程图文件加密与解密窗口类结构图:三、运行调试与分析讨论系统的详细设计代码请查阅附带的代码。

以下仅对各个界面进行截图展示:图2系统主界面图 1 文件加密界面图 2 文件解密界面图 3 待加密文件Plain1.txt图 4 Plain1.txt加密后的文件Cipher.txt图 5 密文文件Cipher.txt解密后的明文文件Plain2.txt运行JA V A程序中,显示系统的主界面,如图三所示,主界面有进入其他子功能的按钮,选择相应的按钮便可进入相应的功能。

加密功能如图四所示,根据提示输入要加密的明文文件路径、密文文件路径,点击加密,若加密成功将弹出提示框,提示加密成功否则提示解密失败。

解密功能如图五所示,根据提示输入要解密的密文文件路径、明文文件路径。

点击解密,若解密成功将弹出提示框,提示解密成功否则提示解密失败。

图6-图8为加密与解密文件的效果图。

四、设计体会与小结本次Java课程设计,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还学习到Java密码扩展服务(Java Cryptography Extension,JCE)。

JCE为加密解密,密钥产生与分配、消息认证码(Message Authentication Code)算法提供框架与实现,支持对称加密、非对称加密、块加密与流加密,也支持安全流与密封对象。

另外对SunJCE服务提供者也有所了解。

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习java语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注重视实践操作,使自己更好地学好计算机。

五、参考文献[1]朱福喜,唐晓军,傅建明编著.Java项目设计与开发范例.北京.电子工业出版社,2005.10[2]朱福喜,尹为民等编著.Java语言与面向对象程序设计.武汉:武汉大学出版社,2002.12[3]冯军,程超等编著.JBuilder 9.0程序设计.北京:中国水利水电出版社,2004.5[4]丁振凡,黎章等编著.Java语言实用教程..北京:北京邮电大学出版社,2005.8[5]何桥,李肃义等编著.Java程序设计简明教程.北京:中国水利水电出版社,2004.9六、附录程序的主要代码:主界面模块主要代码JCEDialog.java//加密按钮事件的处理方法btnEncrypt.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {HashDigest hashDigest=new HashDigest();GenerateKey generateKey=new GenerateKey();Enc enc=new Enc();// TODO Auto-generated method stubString PlainFilePath1,CipherFilePath1,Strpasswrod1;PlainFilePath1=txtPlain.getText();CipherFilePath1=txtCipher.getText();//Strpasswrod1 = txtKey.getText();Strpasswrod1 = new String(txtKey.getPassword());//System.out.println(txtPlain.getText());byte[] KeyData1= hashDigest.HashDigest(Strpasswrod1);//生成密码的HASH 值javax.crypto.SecretKey SecKey1=generateKey.GenerateKey(KeyData1); //由输入的密码的hash值,产生加密密钥boolean EncOK=enc.EncryptFile(SecKey1, PlainFilePath1, CipherFilePath1);//调用文件加密算法txtKey.setText("");if(EncOK==true){JOptionPane.showMessageDialog(null, "文件加密成功!");}else {JOptionPane.showMessageDialog(null, "文件加密失败!");}}});//解密按钮事件的处理方法btnDecrypt.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubHashDigest hashDigest=new HashDigest();GenerateKey generateKey=new GenerateKey();Dec dec =new Dec();String PlainFilePath2,CipherFilePath2,StrPasswrod2;PlainFilePath2=txtPlain.getText();CipherFilePath2=txtCipher.getText();//StrPasswrod2=txtKey.getText();StrPasswrod2=new String(txtKey.getPassword());byte[] KeyData2=hashDigest.HashDigest(StrPasswrod2);javax.crypto.SecretKey SecKey2=generateKey.GenerateKey(KeyData2);boolean DecOK=dec.DecryptFile(SecKey2, PlainFilePath2, CipherFilePath2);txtKey.setText("");if(DecOK==true){JOptionPane.showMessageDialog(null, "文件解密成功!");}else {JOptionPane.showMessageDialog(null, "文件解密失败!");}}});密码hash值生成HashDigest.javapublic class HashDigest {public byte[] HashDigest(String StrPassword){byte[] BytePasswrod=StrPassword.getBytes();String DigestAlgorithm ="SHA-1";byte[] KeyMaterial ={};try{java.security.MessageDigestMesDigest=MessageDigest.getInstance(DigestAlgorithm);MesDigest.update(BytePasswrod);KeyMaterial=MesDigest.digest();return KeyMaterial;}catch(java.security.NoSuchAlgorithmException e1){e1.printStackTrace();return null;}}}Hash产生密钥算法GenrateKey.javapublic class GenerateKey {public SecretKey GenerateKey(byte[] KeyData){String Alogorithm="DES";try{javax.crypto.spec.DESKeySpec DesKeySpec=new DESKeySpec(KeyData);javax.crypto.SecretKeyFactorySecKeyFac=SecretKeyFactory.getInstance(Alogorithm);javax.crypto.SecretKeysecKey=SecKeyFac.generateSecret(DesKeySpec);return secKey;}catch(java.security.NoSuchAlgorithmException e1){e1.printStackTrace();return null;}catch(ng.Exception e2){e2.printStackTrace();return null;}}}文件加密算法Enc.javapublic class Enc {final int MAX_BUF_SIZE=1024;String Algorithm="DES";String EncryptMode="CBC";String PaddingScheme="PKCS5Padding";public boolean EncryptFile(SecretKey SecKey1,String PlainFilePath1,String CipherFilePath1){try{//加密,将明文文件a.txt加密到另一个文件b.txtjavax.crypto.Cipher Cipher1 = Cipher.getInstance(Algorithm+ "/"+ EncryptMode + "/" + PaddingScheme);Cipher1.init(Cipher.ENCRYPT_MODE,SecKey1);java.io.File PlainFile1=new File(PlainFilePath1);java.io.File CipherFile1=new File(CipherFilePath1);long FileLen1=PlainFile1.length();if(FileLen1<=0){JOptionPane.showMessageDialog(null, "明文文件是空的!");return false;}java.io.FileInputStream fis1=new FileInputStream(PlainFile1);java.io.FileOutputStream fos1=new FileOutputStream(CipherFile1);java.io.ObjectOutputStream ObjOS1=new ObjectOutputStream(fos1);byte[] buffer1 = new byte[MAX_BUF_SIZE];int i=fis1.read(buffer1);while(i!=-1){javax.crypto.SealedObject SealedObj1=new SealedObject(buffer1, Cipher1);ObjOS1.writeObject(SealedObj1);i=fis1.read(buffer1);}fis1.close();ObjOS1.flush();ObjOS1.close();fos1.close();return true;}catch(java.security.NoSuchAlgorithmException e1){e1.printStackTrace();return false;}catch(javax.crypto.NoSuchPaddingException e2){e2.printStackTrace();return false;}catch(ng.Exception e3){e3.printStackTrace();return false;}}}文件解密算法Dec.javapublic class Dec {final int MAX_BUF_SIZE=1024;public boolean DecryptFile(SecretKey SecKey2,String PlainFilePath2,String CipherFilePath2){try{java.io.File PlainFile2=new File(PlainFilePath2);java.io.File CipherFile2=new File(CipherFilePath2);long FileLen2=CipherFile2.length();if(FileLen2<=0){JOptionPane.showMessageDialog(null, "密文文件是空的!");return false;}java.io.FileInputStream fis2=new FileInputStream(CipherFile2);java.io.ObjectInputStream ObjIS2=new ObjectInputStream(fis2);java.io.FileOutputStream fos2=new FileOutputStream(PlainFile2);byte[] buffer2=new byte[MAX_BUF_SIZE];javax.crypto.SealedObject SealedObj2=null;SealedObj2=(SealedObject)ObjIS2.readObject();while(SealedObj2!=null){buffer2=(byte[])SealedObj2.getObject(SecKey2);fos2.write(buffer2);SealedObj2=(SealedObject)ObjIS2.readObject();}ObjIS2.close();fis2.close();fos2.flush();fos2.close();return true;}catch(java.security.NoSuchAlgorithmException e1){e1.printStackTrace();return false;}catch(java.io.EOFException e2){System.out.println("解密完成!");return true;}catch(ng.Exception e3){e3.printStackTrace();return false;}}}。

相关文档
最新文档