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)。
使用Java实现安全性加密与解密

使用Java实现安全性加密与解密在当今信息时代,数据的安全性越来越受到重视。
无论是个人的隐私信息还是企业的商业机密,都需要得到有效的保护。
而加密与解密技术就是一种常用的保护数据安全的手段。
本文将介绍如何使用Java语言实现安全性加密与解密。
1. 加密与解密的基本概念加密是将明文转换为密文的过程,而解密则是将密文转换回明文的过程。
加密算法通常使用一个密钥,密钥用于控制加密过程的转换规则,只有拥有正确的密钥才能进行解密。
常见的加密算法有对称加密算法和非对称加密算法。
对称加密算法使用相同的密钥进行加密和解密,速度较快,但密钥的传输和管理相对困难。
非对称加密算法使用一对密钥,公钥用于加密,私钥用于解密,安全性较高,但速度较慢。
2. 使用Java实现对称加密Java提供了多种对称加密算法的实现,如DES、AES等。
下面以AES算法为例,介绍如何使用Java实现对称加密。
首先,需要导入Java加密扩展(JCE)的包。
在Java 8及以上版本中,JCE已经被默认包含在JDK中,无需额外导入。
接下来,可以使用以下代码进行AES加密:```javaimport javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;public class AESUtil {private static final String ALGORITHM = "AES";public static String encrypt(String plainText, String key) throws Exception {KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);keyGenerator.init(128);SecretKey secretKey = keyGenerator.generateKey();byte[] enCodeFormat = secretKey.getEncoded();SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, ALGORITHM);Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());return Base64.getEncoder().encodeToString(encryptedBytes);}public static String decrypt(String encryptedText, String key) throws Exception {KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);keyGenerator.init(128);SecretKey secretKey = keyGenerator.generateKey();byte[] enCodeFormat = secretKey.getEncoded();SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, ALGORITHM);Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);byte[] decryptedBytes = cipher.doFinal(encryptedBytes);return new String(decryptedBytes);}}```以上代码中,`encrypt`方法用于对明文进行加密,`decrypt`方法用于对密文进行解密。
Java 加密与解密

东华理工大学信息工程学院《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.各模块的功能及程序说明图形用户界面模块:开始点击浏览读取文件输入密钥密钥非空YN加/解密是否存在此文件的加/解密文件N加/解密成功 NY图1 程序流程添加各种所需组件,设置窗口事件。
JAVA课程设计 文件加密解密

JAVA课程设计文件加密解密JAVA课程设计:文件加密解密在数字化时代,数据的安全性越来越受到重视。
随着互联网的普及,我们的个人和机密信息可能会面临被黑客窃取的风险。
为了保护数据的安全性,文件加密和解密成为了一项重要的技术。
文件加密是将文件中的内容转化为密文,使得未经授权的人无法直接读取其中的信息。
而文件解密则是将密文还原为原始的可读文件。
在JAVA课程设计中,我们可以利用JAVA编程语言来实现文件加密和解密的功能。
首先,我们需要了解加密算法的原理。
常见的加密算法包括对称加密和非对称加密。
对称加密使用相同的密钥进行加密和解密,而非对称加密则使用一对密钥,即公钥和私钥。
在本文中,我们将重点介绍对称加密算法。
对称加密算法中,常用的算法有DES、AES等。
我们以AES算法为例,来实现文件的加密和解密。
首先,我们需要导入Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files。
这是因为AES算法要求密钥长度为128位或以上,而默认的JDK只支持128位的密钥长度。
为了使用更长的密钥长度,我们需要下载并安装JCE Unlimited Strength Jurisdiction Policy Files。
接下来,我们需要编写加密和解密的代码。
我们可以使用Java的Cipher类来实现AES算法的加密和解密功能。
```javaimport javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import java.io.*;import java.security.NoSuchAlgorithmException;public class FileEncryption {public static void encryptFile(String inputFile, String outputFile, String key) throws Exception {SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);try (FileInputStream inputStream = new FileInputStream(inputFile);FileOutputStream outputStream = new FileOutputStream(outputFile);CipherOutputStream cipherOutputStream = new CipherOutputStream(outputStream, cipher)) {byte[] buffer = new byte[8192];int count;while ((count = inputStream.read(buffer)) != -1) {cipherOutputStream.write(buffer, 0, count);}}}public static void decryptFile(String inputFile, String outputFile, String key) throws Exception {SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);try (FileInputStream inputStream = new FileInputStream(inputFile);CipherInputStream cipherInputStream = newCipherInputStream(inputStream, cipher);FileOutputStream outputStream = new FileOutputStream(outputFile)) {byte[] buffer = new byte[8192];int count;while ((count = cipherInputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, count);}}}public static void main(String[] args) {try {String inputFile = "input.txt";String encryptedFile = "encrypted.txt";String decryptedFile = "decrypted.txt";String key = "ThisIsASecretKey";encryptFile(inputFile, encryptedFile, key);decryptFile(encryptedFile, decryptedFile, key);System.out.println("File encryption and decryption completed successfully.");} catch (Exception e) {e.printStackTrace();}}}```在上述代码中,我们定义了两个方法`encryptFile`和`decryptFile`,分别用于加密和解密文件。
java课程设计凯撒加密解密

java课程设计凯撒加密解密一、教学目标本章节的教学目标旨在让学生掌握Java语言实现凯撒加密和解密的方法。
通过本章节的学习,学生应达到以下目标:1.知识目标:了解凯撒加密和解密的基本原理;掌握Java语言的基本语法和编程技巧;理解循环、条件语句在程序中的应用。
2.技能目标:能够使用Java语言编写简单的凯撒加密和解密程序;能够分析并解决程序中的错误和问题;能够协作完成编程任务,提高团队协作能力。
3.情感态度价值观目标:培养对计算机科学的兴趣和好奇心;培养学生的创新精神和实践能力;培养学生的团队合作意识和沟通能力。
二、教学内容本章节的教学内容主要包括以下几个部分:1.凯撒加密和解密的基本原理;2.Java语言的基本语法和编程技巧;3.循环、条件语句在程序中的应用;4.凯撒加密和解密程序的编写与调试。
第1课时:凯撒加密和解密的基本原理;第2课时:Java语言的基本语法和编程技巧;第3课时:循环、条件语句在程序中的应用;第4课时:凯撒加密和解密程序的编写与调试。
为了提高教学效果,本章节将采用以下教学方法:1.讲授法:讲解凯撒加密和解密的基本原理,以及Java语言的基本语法和编程技巧;2.案例分析法:分析典型的凯撒加密和解密案例,引导学生理解并掌握相关知识;3.实验法:让学生动手编写凯撒加密和解密程序,培养学生的实践能力;4.讨论法:学生进行小组讨论,分享编程心得,提高学生的团队协作能力。
四、教学资源为了支持教学内容和教学方法的实施,本章节将准备以下教学资源:1.教材:Java编程入门教程;2.参考书:Java语言程序设计;3.多媒体资料:凯撒加密和解密的案例视频;4.实验设备:计算机、网络环境。
五、教学评估本章节的教学评估将采用多元化的评价方式,以全面、客观地评价学生的学习成果。
评估内容包括:1.平时表现:通过课堂参与、提问、回答问题等环节,评估学生的学习态度和积极性;2.作业:布置相关的编程作业,评估学生的理解和应用能力;3.实验报告:评估学生在实验过程中的操作能力和解决问题的能力;4.考试:设置期末考试,检验学生对凯撒加密和解密知识的掌握程度。
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文件加密解密课程设计一、课程目标知识目标:1. 学生理解Java语言文件I/O操作的基本原理;2. 学生掌握使用Java进行文件加密和解密的基础算法;3. 学生了解加密技术在现实生活中的应用及其重要性。
技能目标:- 学生能够运用所学知识,独立编写简单的Java程序完成文件的加密和解密操作;- 学生能够运用调试工具解决程序中出现的简单错误;- 学生通过实际操作,掌握将理论知识应用于实践中的方法。
情感态度价值观目标:- 学生培养对计算机编程的兴趣,增强学习Java语言的自信心;- 学生认识到信息安全的重要性,树立正确的网络安全意识;- 学生在小组合作中,培养团队协作精神,学会尊重他人意见,共同进步。
课程性质:本课程为信息技术选修课,以实践操作和理论相结合的方式进行教学。
学生特点:学生为高中二年级,已具备一定的Java编程基础,对新鲜事物充满好奇心,有一定的自主学习能力和探究精神。
教学要求:结合学生特点,课程注重理论与实践相结合,强调学生动手实践能力,通过分组讨论和项目式学习,提高学生的综合素质。
教学过程中,将目标分解为具体可操作的学习任务,确保学生能够达到预定的学习成果,为后续的深入学习打下坚实基础。
二、教学内容1. 文件I/O操作原理复习:回顾Java中文件读写的相关类和方法,重点掌握FileInputStream、FileOutputStream、BufferedReader、BufferedWriter 等类的使用。
- 教材章节:第三章 Java基本I/O流。
2. 加密算法基础:介绍基本的加密算法,如异或加密、移位加密等,分析算法原理和实现方法。
- 教材章节:第七章 数据加密与安全。
3. Java加密解密实现:利用Java语言实现文件的加密和解密,结合实践案例,让学生动手编写程序。
- 教材章节:第七章 数据加密与安全,第十章 Java多线程和网络编程(加密通信)。
4. 加密技术应用:分析加密技术在生活中的应用,如网络安全、数据保护等。
文件加密与解密—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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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类,此类中包含了加密与解密方法。
② 加密方法接收一个字符串和密钥,按照密钥中的字母进行移位加密。
③ 解密方法接收一个密文和密钥,按照密钥中的字母进行移位解密。
4. 文件加密与解密
实现步骤如下:
① 定义FileCipher类,此类中包含了加密与解密方法。
② 加密方法接收一个明文文件名和密钥,将文件内容进行加密。
③ 解密方法接收一个密文文件名和密钥,将文件内容进行解密。
4. 性能分析
本次实验中的三种加密算法的性能是不一样的,简单的性能对比如下:
① Caesar加密算法的算法复杂度较低,因此加密速度较快。
② Playfair加密算法的算法复杂度较高,因此加密速度较慢。
③ Vigenere加密算法的算法复杂度比Caesar高一些,但比Playfair低一些,因此加密速度比Playfair快一些。
四、实验结论
1. 通过Java程序设计实现了Caesar加密算法、Playfair加密算法和Vigenere加密算法的加密与解密功能。
2. 通过Java程序设计实现了对文字文件进行加密与解密的功能。
3. 进行了简单的性能分析,得出不同加密算法的加密速度存在差异。
以上就是我的Java课程设计——加密与解密实验报告,请老师批阅。