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

1

2020年4月19日

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

文档仅供参考,不当之处,请联系改正。

1

2020年4月19日 JAVA课程设计

题目: 文件的加密与解密

姓 名:

学 号:

班 级:

日 期:

指导老师

分 数 文档仅供参考,不当之处,请联系改正。

2

2020年4月19日 目 录

一、设计思路 ................................................................ 3

二、具体实现 ................................................................ 3

三、运行调试与分析讨论 ............................................ 9

四、设计体会与小结 .................................................. 12

五、参考文献 .............................................................. 13

六、附录 ...................................................................... 14

文档仅供参考,不当之处,请联系改正。

3

2020年4月19日 一、 设计思路

自从Java技术出现以业,有关Java平台的安全性用由Java技术发展所引发的安全性问题,引起了越来越多的关注。当前,Java已经大量应用于各个领域,研究Java的安全性对于更好地利用Java具有深远的意义。使用Java的安全机制设计和实现安全系统更具有重要的应用价值。

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

二、具体实现

本系统经过用户界面接收三个参数:明文文件、密文文件、口令。采用DES加密算法,密码分组链(Cipher Block Chaining,CBC)加密模式,PKCS#5-Padding的分组填充算法。因为CBC涉及到底层算法参数的解密密钥的传递,因此将明文文件中的字节块以密封对象(Sealed Object)的方式加密后,用对象流输出到密文文件,这样就将密文、算法参数、解密密钥三都密封到一个对象中了。口令的hash值作为产生密钥的参数。设计流程图如下所示:

文档仅供参考,不当之处,请联系改正。

4

2020年4月19日 设计文件加密解密的界面实现hash算法,用于产生口令的hash值实现由口令hash值产生密钥的算法实现文件加密算法加密按钮事件实现文件解密算法解密按钮事件

文件加密与解密设计流程图

本系统中,包含Default,Shares,SecretKey,EncAndDec四个包共6个类组成。定义的几个 参数:MAX_BUF_SIZE为每次从文件中读取的字节数,也是内存缓冲区的大小;加密算法为DES;加密模式是密码分组链(CBC)模式;分组填充方式是PKCS#5Padding。包和类结构图如下所示:

本课程设计,包和类结构图:

Package Default -> Class JCEDialog//文件加密解密窗口类

Package Shares -> Class HashDigest、Class byte2hex//密码Hash值生成类、二进制转字符串类

Package SecretKey -> Class GenerateKey//由密码Hash值生成秘密密钥类

Package EncAndDec -> Class Dec、Class Enc//文件加密、解密类

合集下载

SpringBoot中_JAVA利用国密算法_实现内容的加密_解密

SpringBoot中_JAVA利用国密算法_实现内容的加密_解密

首先来看一下什么是国密算法:

国密即国家密码局认定的国产密码算法,即商用密码。

国密主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

1、SM1 为对称加密。其加密强度与AES(高级加密标准,Advanced Encryption Standard)相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

2、SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA

2048位高,但运算速度快于RSA。

3、SM3为消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。

4、SM4为无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。

在很多地方还是会用到的,这里说一下这个:SM2

1.在pom.xml中引入依赖jar包:

org.bouncycastle

bcprov-jdk15on

1.58

2.然后来写一个工具类,用来生成国密的,公钥和私钥 这个密码对.

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import java.security.*;

import java.security.spec.ECGenParameterSpec;

import java.security.spec.PKCS8EncodedKeySpec;

import java.security.spec.X509EncodedKeySpec;

import java.util.Base64;

java课程设计实验报告

java课程设计实验报告

java课程设计实验报告

一一实验目的

加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。在对Java程序的调试过程中,提高学生分析程序中出现的错误与排除这些错误的能力。通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。

二、实验要求

(1)问题描述准确、规范;

(2)程序结构合理,调试数据准确、有代表性;(3)界面布局整齐,人机交互方便;(4)输出结果正确;(5)正确撰写实验报告。

三、设计内容

11、计算器

计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算与混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。要求使用Applet实现该计算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。

22、文本编辑器 可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。其她功能参照windows的文本编辑器。

四四.实验步骤(1)上机实验之前,为课程设计的内容作好充分准备。对每次上机需要完成的任务进行认真的分析,画出程序流程图,手工写出符合任务要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。

(2)按照实验目的与实验内容进行上机操作。录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。

(3)根据实验结果,写出实验报告。

五、、源代码及运行结果

1.计算器源代码importjava、awt、*;importjava、awt、event、*;importjava、lang、*;

文件加密解密算法研究与实现——基于USBKEY的文件加密解密方案

文件加密解密算法研究与实现——基于USBKEY的文件加密解密方案

上海交通大学硕士学位论文文件加密解密算法研究与实现——基于USBKEY的文件加密解密方案姓名:丁晨骊申请学位级别:硕士专业:计算机技术指导教师:邱卫东;沈亦路20091201上海交通大学工程硕士学位论文 摘要

第 5 页 文件加密解密算法研究与实现 ——基于USBKEY的文件加密解密方案 摘 要 随着信息社会的到来,人们在享受信息资源所带来的巨大便利的同时,也面临着信息安全问题的严峻考验。如何实现对企业重要信息的加密,防止企业机密信息的泄漏,提高内部机要文件存放的安全性,是当前信息安全领域的一个重要课题。 本文的主要研究内容是文件加密系统的解决方案中文件的加密算法和密钥管理。首先,论文对现有四种加密方式进行了深入研究,详细分析了这四种加密方式在使用技术、密钥管理及安全强度方面的优缺点及其具体适用环境。对现有文件加密系统方案的合理性进行了评估、分析和比较。 其次,本文提出了一种安全有效的文件加密方案,其中主要工作有两大部分:1.针对原使用加密算法单一,加密强度不高进行了改进,并基于混合型加密原理作为本文提出文件加密方案的主要手段。与改进前相比,新方案在文件加密强度上有了较大的提高,消除了原加密体制存在的诸多安全威胁。2.设计了独立的密钥管理系统,将密钥管理和密码钥匙盘(USBKEY)相结合,在抗模拟接口、抗跟踪软件能力上有很大的提高,将密钥和密文彻底分离,大大提高了密钥的安全性。 最后本文对所提出的加密系统的内存加密数据速度以及文件加密速度进行了测试。分别将一个文件631KB和3MB的文件进行了加解密的测试,测试结果表明本文提出的文件加密系统具有较好的性能,具有较大的实用性。 关键词:密码体制;DES;RSA;USB;加密; 上海交通大学工程硕士学位论文 摘要

第 6 页 ABSTRACT With the advent of the information society, people enjoying the tremendous information resources to facilitate the same time, also faces a severe test of information security issues. How to achieve business critical information on encryption, to prevent enterprises from the leakage of confidential information to improve the security of internal confidential document repository, and is the current information security is an important issue. The main research contents of this file encryption system, the solution file encryption algorithm and key management. First, the papers on the existing four kinds of encryption methods conducted in-depth research, detailed analysis of these four kinds of encryption methods in the use of technology, key management and security strength of the strengths and weaknesses and their practical application in the environment. On the existing file encryption system, the rationality of the program were assessed, analysis and comparison. Secondly, this paper presents a safe and effective file encryption program, which has two main parts: 1. For the original use of a single encryption algorithm, encryption is not high intensity has been improved, and is based on principles of hybrid encryption file encryption program, as proposed in this paper the principal means. And improved compared to before the new package file encryption intensity has been greatly improved, eliminating many of the original encryption system, there is a security threat. 2. Designed to separate key management system, key management and cryptographic keys, disk (USBKEY) combined in the anti-analog interface, the ability of anti-tracking software have greatly improved, would be key and cyphertext complete separation, greatly increased of the key security. Finally, the paper for the proposed encryption system to encrypt data rate memory, as well as file encryption speed tested. , Respectively, a 631KB file, and 3MB of file encryption and decryption of the test, the test results show that the file encryption system proposed in this paper has good performance, with great practicality. Keywords: cryptography; DES; RSA; USB; encryption上海交通大学工程硕士学位论文 第一章 绪论

DES加密和解密java代码

DES加密和解密java代码

DES加密和解密java代码

在说DES加密算法之前,我们⾸先了解⼏个基本概念:

1. 明⽂:明⽂是指没有经过加密的数据。⼀般⽽⾔,明⽂都是等待传输的数据。由于没有经过加密,明⽂很容易被识别与破解,因此在

传输明⽂之前必须进⾏加密处理。

2. 密⽂:密⽂只是明⽂经过某种加密算法⽽得到的数据,通常密⽂的形式复杂难以识别及理解。

3. 密钥:密钥是⼀种参数,它是在明⽂转换为密⽂或将密⽂转换为明⽂的算法中输⼊的参数。

4. 对称加密:通信双⽅同时掌握⼀个密钥,加密解密都是由⼀个密钥完成的(即加密密钥等于解密密钥,加解密密钥可以相互推倒出

来)。双⽅通信前共同拟定⼀个密钥,不对第三⽅公开。

5. 分组加密:分组密码是将明⽂分成固定长度的组,每⼀组都采⽤同⼀密钥和算法进⾏加密,输出也是固定长度的密⽂。

好了了解这些以后,我们再来说DES加密算法。DES 算法是⼀种常见的分组加密算法,由IBM公司在1971年提出。DES 算法是分组加

密算法的典型代表,同时也是应⽤最为⼴泛的对称加密算法。下⾯我们详细介绍下:

1.分组长度:DES 加密算法中,明⽂和密⽂为 64 位分组。密钥的长度为 64 位,但是密钥的每个第⼋位设置为奇偶校验位,因此密钥的实

际长度为56位。

2.加密流程:DES 加密算法⼤致分为 4 步:初始置换、⽣成⼦密钥、迭代过程、逆置换。

代码如下:

需特别注意: 不要使⽤JDK中⾃带的sun.misc.BASE64Decoder类去做BASE64,该类会在最后⾯多加换⾏。

⽽应使⽤apache中的mons.codec.binary.Base64这个类来做base64加密。(待验证)

import javax.crypto.Cipher;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

import javax.crypto.spec.IvParameterSpec;

java安全课程设计

java安全课程设计

java安全课程设计

一、教学目标

本课程旨在通过Java编程语言的安全性教学,使学生掌握Java程序设计的基本技能,并深入了解Java程序中的安全问题及其解决方法。具体的教学目标如下:

知识目标:使学生掌握Java编程语言的基本语法、数据结构、面向对象编程等知识;了解Java程序常见的安全漏洞,如SQL注入、跨站脚本攻击等;掌握Java安全编程的最佳实践。

技能目标:培养学生具备扎实的Java编程能力,能够编写结构清晰、安全性高的Java程序;培养学生使用Java安全框架和工具解决实际安全问题的能力。

情感态度价值观目标:培养学生对Java编程语言的兴趣,使其认识到Java程序安全性在实际应用中的重要性,提高学生的社会责任感和职业道德素养。

二、教学内容

本课程的教学内容主要包括Java编程基础、Java安全漏洞及其解决方法、Java安全编程最佳实践等。具体安排如下:

1. Java编程基础:Java语法、数据结构、面向对象编程、异常处理等。

2. Java安全漏洞:SQL注入、跨站脚本攻击、文件上传漏洞、命令执行漏洞等。

3. Java安全编程最佳实践:身份验证、权限控制、数据加密、安全框架使用等。

4. 实战案例:分析真实的安全事故案例,引导学生运用所学知识解决实际问题。

三、教学方法

本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1. 讲授法:通过讲解Java编程语言的基本语法、数据结构、面向对象编程等内容,使学生掌握Java编程基础。

2. 讨论法:学生针对Java安全漏洞及其解决方法进行分组讨论,促进学生思考和交流。

3. 案例分析法:分析真实的安全事故案例,引导学生运用所学知识解决实际问题。 4. 实验法:安排实验室实践环节,使学生在实际操作中掌握Java安全编程技巧。

四、教学资源

本课程所需教学资源包括教材、参考书、多媒体资料和实验设备等。

java对压缩文件进行加密,winrar和好压直接输入解密密码来使用

java对压缩文件进行加密,winrar和好压直接输入解密密码来使用

java对压缩⽂件进⾏加密,winrar和好压直接输⼊解密密码来使

⽤

net.lingala.zip4j

zip4j

1.3.2

或者下载zip4j-1.3.2.jar

以下是对⽂件压缩的⽅法,这⾥只是单个⽂件压缩,多个变通⼀下就可以。

package com.yggdrasill.foura.web.sysadmin.backup.service;

import net.lingala.zip4j.core.ZipFile;import net.lingala.zip4j.exception.ZipException;import net.lingala.zip4j.model.ZipParameters;import net.lingala.zip4j.util.Zip4jConstants;

import java.io.*;

import java.util.ArrayList;

public class ZipComplexCipherUtil {

/** * 加密1,winrar,好压2345可直接输⼊密码解压 * 根据filepath读取⽂件并加密返回

*/

public static void zipFileAndEncrypt(String filePath,String zipFileName,String password) {

try {

ZipParameters parameters = setParam(password);

//压缩⽂件,并⽣成压缩⽂件

ArrayList filesToAdd = new ArrayList();

File file = new File(filePath);

filesToAdd.add(file);

ZipFile zipFile = new ZipFile(zipFileName);

zipFile.addFiles(filesToAdd, parameters);//this line does works

Java加解密

Java加解密

⼀、概述

Jasypt 这个Java类包为开发⼈员提供⼀种简单的⽅式来为项⽬增加加密功能,包括:密码Digest认证,⽂本和对象加密,集成

hibernate,Spring Security(Acegi)来增强密码管理。

Jasypt是⼀个Java库,可以使开发者不需太多操作来给Java项⽬添加基本加密功能,⽽且不需要知道加密原理。

根据Jasypt⽂档,该技术可⽤于加密任务与应⽤程序,例如加密密码、敏感信息和数据通信、创建完整检查数据的sums. 其他性能包括⾼

安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、⽂本、数字和⼆进制⽂件。Jasypt也可以与Acegi Security整合也即Spring

Security。Jasypt亦拥有加密应⽤配置的集成功能,⽽且提供⼀个开放的API从⽽任何⼀个Java Cryptography Extension都可以使⽤Jasypt。

Jasypt还符合RSA标准的基于密码的加密,并提供了⽆配置加密⼯具以及新的、⾼可配置标准的加密⼯具。

1、该开源项⽬可⽤于加密任务与应⽤程序,例如加密密码、敏感信息和数据通信

2、还包括⾼安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、⽂本、数字和⼆进制⽂件。

3、Jasypt还符合RSA标准的基于密码的加密,并提供了⽆配置加密⼯具以及新的、⾼可配置标准的加密⼯具。

4、加密属性⽂件(encryptable properties files)、Spring work集成、加密Hibernate数据源配置、新的命令⾏⼯具、URL加密的

Apache wicket集成以及升级⽂档。

5、Jasypt也可以与Acegi Security整合也即Spring Security。Jasypt亦拥有加密应⽤配置的集成功能,⽽且提供⼀个开放的API从⽽任

何⼀个Java Cryptography Extension都可以使⽤Jasypt。⼆、使⽤

java课程设计报告

- 1 - java课程设计报告

随着Java言的不断发展,越来越多的编程人员开始使用 Java开发应用程序,这就催生出了一种新的课程 Java程设计。本文旨在通过总结 Java程设计的过程及其相关知识,以便于编程人员以及研究者对 Java程设计有一个更深入的了解。

首先,要完成 Java程设计,需要了解 Java语言特性和编程工具。这里不仅要掌握 Java言本身的知识,还要熟悉 Java架和测试框架,这样才能开发出能够完成各种任务的应用程序。此外,学习

Java程设计的人还需要具备一定的网络知识,这样可以更好地了解

Java程设计的用途,以及 Java发的环境,否则,将很难完成 Java程设计。

其次,要开始 Java程设计,设计人员要先明确设计内容,比如要设计的应用程序的功能、界面要求等,还要考虑安全性、可维护性等方面,以确保设计出来的程序在实际应用中能够如预期般完成任务。

之后,设计人员就可以根据设计内容,编写 Java序,实现功能。此时,设计人员要根据需求分析,合理安排代码结构,并确定需要用到的类库和技术;同时,实现功能时也要注意代码质量,要遵守 Java程的规范,要避免出现内存泄漏等问题。

最后,在完成 Java程设计之后,设计人员要进行测试,确保程序能够完成预期任务。这里可以使用基于 Junit(Java元测试框架)的测试框架,测试各个类的接口和输出内容,以确保程序功能正常,做到稳定可靠。 - 2 - 总的来说,要完成 Java程设计,不仅要有良好的 Java言和编程工具的基础知识,还要了解 Java发的环境,还要具备一定的网络知识,最后要仔细的进行测试,确保设计出来的程序稳定可靠,才能完成 Java程设计。总之,很明显,Java程设计并不容易,但所能学到的知识也丰富多样,对于以后的研究和工作也有很大的帮助,因此,建议编程人员考虑学习 Java程设计,来拓展自己的知识面和应用能力。

javasm4国密算法加密、解密

javasm4国密算法加密、解密

1.准备⼯作

所需jar包:

bcprov-jdk15on-1.59.jar

commons-lang3-3.1.jar

20200901

对应的maven依赖

org.bouncycastle

bcprov-jdk15on

1.66

import java.security.Key;

import java.security.NoSuchAlgorithmException;

import java.security.NoSuchProviderException;

import java.security.SecureRandom;

import java.security.Security;

import java.util.Arrays;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.spec.SecretKeySpec;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;

/**

* sm4加密算法⼯具类

* @explain sm4加密、解密与加密结果验证

* 可逆算法

* @author Marydon

* @creationTime 2018年7⽉6⽇上午11:46:59

* @version 1.0

* @since

*@****************************

*/

public class Sm4Util {

static {

Security.addProvider(new BouncyCastleProvider());

}

private static final String ENCODING = "UTF-8";

jav课程设计报告

jav课程设计报告

一、教学目标

本课程旨在让学生掌握Java编程语言的基本语法、编程技巧和相关概念,培养学生的编程能力和解决问题的能力。通过本课程的学习,学生将能够:

1. 熟练掌握Java编程语言的基本语法和编程规范;

2. 掌握Java语言的面向对象编程思想,包括类、对象、继承、多态等;

3. 熟悉Java语言的常用数据结构和相关算法;

4. 能够运用Java语言编写简单的应用程序,解决实际问题;

5. 培养良好的编程习惯和团队协作能力。

二、教学内容

本课程的教学内容主要包括Java编程语言的基本语法、面向对象编程、数据结构与算法、应用程序开发等。具体安排如下:

1. 第一章:Java编程基础,包括Java语言的概述、开发环境搭建、基本数据类型、运算符、控制语句等;

2. 第二章:面向对象编程,包括类与对象、继承与多态、封装与抽象等;

3. 第三章:常用数据结构,包括数组、链表、栈、队列、树、图等;

4. 第四章:算法与排序,包括常见排序算法、查找算法、算法分析与设计等;

5. 第五章:Java应用程序开发,包括图形用户界面设计、文件操作、网络编程等。

三、教学方法

为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。具体包括:

1. 讲授法:通过讲解Java编程语言的基本概念、语法和编程技巧,使学生掌握Java编程的基本知识;

2. 案例分析法:通过分析实际案例,使学生理解面向对象编程的思想,并能够运用到实际项目中;

3. 实验法:安排上机实验,让学生动手编写Java程序,培养学生的编程能力和解决问题的能力; 4. 讨论法:学生进行小组讨论,分享学习心得和经验,提高学生的团队协作能力。

四、教学资源

为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:

1. 教材:选用权威、实用的Java编程教材,为学生提供系统的学习资料;

2. 参考书:提供相关的Java编程参考书籍,方便学生课后自学和深入研究;

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