`
lupingui
  • 浏览: 159235 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAVA 文件加解密

阅读更多

做网站有时会处理一些上传下载的文件。可能会用到加解密功能。以下是一个加解密方法。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import net.ezcom.common.conf.Conf;
import net.ezcom.common.time.TimeHandler;

/**
 * 加解密单元
 * @author lupingui
 * 2009-01-12 17:55:47
 */

public class EncryptDecrypt {
	
	//加解密KEY,这个不能变动,这里可以由任意的字符组成,尽量用特殊字符
	static final byte[] KEYVALUE = "".getBytes();	
	//读取字节的长度
	static final int BUFFERLEN = 512;
	//加密临时存储目录
	static final String TRANSIT_DIR_ENC =  "";
	//解密临时存储目录
	static final String TRANSIT_DIR_DEC =  "";
		
	/**
	 * 文件加密
	 * @param oldFile:待加密文件
	 * @param saveFileName:加密后文件保存路径
	 * @return
	 * @throws IOException
	 */
	public static boolean encryptFile(File oldFile, String saveFileName) throws IOException{
		//如果传入的文件不存在或者不是文件则直接返回
		if (!oldFile.exists() || !oldFile.isFile()){			
			return false;
		}
		FileInputStream in = new FileInputStream(oldFile);
		//加密后存储的文件
		File file = new File(saveFileName);
		if (!file.exists()){
			return false;
		}
		//读取待加密文件加密后写入加密存储文件中
		FileOutputStream out = new FileOutputStream(file);
		int c, pos, keylen;
		pos = 0;
		keylen = KEYVALUE.length;
		byte buffer[] = new byte[BUFFERLEN];
		while ((c = in.read(buffer)) != -1) {
			for (int i = 0; i < c; i++) {
				buffer[i] ^= KEYVALUE[pos];
				out.write(buffer[i]);
				pos++;
				if (pos == keylen){
					pos = 0;
				}
			}
		}
		in.close();
		out.close();
		
		return true;
	}
	
	/**
	 * 文件加密
	 * @param oldFile:待加密文件
	 * @param saveFile:加密后的文件
	 * @return
	 * @throws IOException
	 */
	public static boolean encryptFile(File oldFile, File saveFile) throws IOException{
		//如果传入的文件不存在或者不是文件则直接返回
		if (!oldFile.exists() || !oldFile.isFile() || !saveFile.exists() || !saveFile.isFile()){			
			return false;
		}
		FileInputStream in = new FileInputStream(oldFile);
		//读取待加密文件加密后写入加密存储文件中
		FileOutputStream out = new FileOutputStream(saveFile);
		int c, pos, keylen;
		pos = 0;
		keylen = KEYVALUE.length;
		byte buffer[] = new byte[BUFFERLEN];
		while ((c = in.read(buffer)) != -1) {
			for (int i = 0; i < c; i++) {
				buffer[i] ^= KEYVALUE[pos];
				out.write(buffer[i]);
				pos++;
				if (pos == keylen){
					pos = 0;
				}
			}
		}
		in.close();
		out.close();
		
		return true;		
	}
	
	/**
	 * 文件加密
	 * @param oldFile:待加密文件
	 * @return
	 * @throws IOException
	 */
	public static File encryptFile(File oldFile) throws IOException{
		//如果传入的文件不存在或者不是文件则直接返回
		if (!oldFile.exists() || !oldFile.isFile()){
			
			return null;
		}
		FileInputStream in = new FileInputStream(oldFile);
		//临时加密文件存储目录
		File dirFile = new File(TRANSIT_DIR_ENC);
		//如果临时存储目录不存在或不是目录则直接返回
		if (!dirFile.exists() || !dirFile.isDirectory()){
			
			return null;
		}
		//加密后存储的文件
		File file = new File(dirFile,"enc_" + TimeHandler.getInstance().getTimeInMillis() + "_" + oldFile.getName());
		if (!file.exists()){
			file.createNewFile();
		}
		//读取待加密文件加密后写入加密存储文件中
		FileOutputStream out = new FileOutputStream(file);
		int c, pos, keylen;
		pos = 0;
		keylen = KEYVALUE.length;
		byte buffer[] = new byte[BUFFERLEN];
		while ((c = in.read(buffer)) != -1) {
			for (int i = 0; i < c; i++) {
				buffer[i] ^= KEYVALUE[pos];
				out.write(buffer[i]);
				pos++;
				if (pos == keylen){
					pos = 0;
				}
			}
		}
		in.close();
		out.close();
		
		//返回加密后的文件
		return file;
	}
	
	/**
	 * 文件加密
	 * @param oldFileName:待加密文件路径
	 * @return
	 * @throws IOException 
	 * @throws Exception
	 */
	public static File encryptFile(String oldFileName) throws IOException {
		//如果待加密文件路径不正确则直接返回
		if (oldFileName == null || oldFileName.trim().equals("")){
			
			return null;
		}
		//待加密文件
		File oldFile = new File(oldFileName);
		//如果传入的文件不存在或者不是文件则直接返回
		if (!oldFile.exists() || !oldFile.isFile()){
			
			return null;
		}
		//调用文件加密方法并返回结果
		return encryptFile(oldFile);
	}
	
	/**
	 * 文件解密
	 * @param oldFile:待解密文件
	 * @return
	 * @throws IOException
	 */
	public static File decryptFile(File oldFile) throws IOException{
		//如果待解密文件不存在或者不是文件则直接返回
		if (!oldFile.exists() || !oldFile.isFile()){
			
			return null;
		}
		FileInputStream in = new FileInputStream(oldFile);
		//临时解密文件存储目录
		File dirFile = new File(TRANSIT_DIR_DEC);
		//如果临时解密文件存储目录不存在或不是目录则返回
		if (!dirFile.exists() || !dirFile.isDirectory()){
			
			return null;
		}
		//解密存储文件
		File file = new File(dirFile,"dec_" + TimeHandler.getInstance().getTimeInMillis() + "_" + oldFile.getName().substring(oldFile.getName().lastIndexOf(".")));
		if (!file.exists()){
			file.createNewFile();
		}
		//读取待解密文件并进行解密存储
		FileOutputStream out = new FileOutputStream(file);
		int c, pos, keylen;
		pos = 0;
		keylen = KEYVALUE.length;
		byte buffer[] = new byte[BUFFERLEN];
		while ((c = in.read(buffer)) != -1) {
			for (int i = 0; i < c; i++) {
				buffer[i] ^= KEYVALUE[pos];
				out.write(buffer[i]);
				pos++;
				if (pos == keylen){
					pos = 0;
				}
			}
		}
		in.close();
		out.close();
		
		//返回解密结果文件
		return file;		
	}
	
	/**
	 * 文件解密
	 * @param oldFileName:待解密文件路径
	 * @return
	 * @throws Exception
	 */
	public static File decryptFile(String oldFileName) throws Exception {
		//如果待解密文件路径不正确则直接返回
		if (oldFileName == null || oldFileName.trim().equals("")){
			
			return null;
		}
		//待解密文件
		File oldFile = new File(oldFileName);
		//如果待解密文件不存在或不是文件则直接返回
		if (!oldFile.exists() || !oldFile.isFile()){
			
			return null;
		}
		
		//调用文件解密方法并返回结果
		return decryptFile(oldFile);
	}
}
 

 

分享到:
评论

相关推荐

    Java文件加解密工具类

    Java文件加解密工具类,使用AES算法,256位秘钥。srcFile为输入文件,destFile为输出文件。

    基于JAVA文件加解密的实验报告

    【基于JAVA文件加解密的实验报告】 本报告聚焦于使用Java进行文件加解密的实践,主要涉及了面向对象程序设计(JAVA)课程设计,选题为文件加解密。设计目标包括利用特定加密算法对文本文件进行加密和解密,支持RSA...

    Java 文件加密解密器

    Java 文件加密解密器 可对所有文件进行加密和解密,第一次运行加密,第二次运行解密。

    Java文件加密解密

    在加密和解密过程中,你需要将文件流包装成`CipherInputStream`或`CipherOutputStream`,以便在数据传输过程中完成加解密。 5. **混淆与 Padding**:为了确保数据能被有效加密,通常需要填充数据到特定的块大小,如...

    java 文件 加密 解密

    总的来说,这个Eclipse项目提供了一个学习和实践Java文件加密解密的平台。通过研究源码,你可以深入理解各种加密算法的工作原理,并学习如何在实际项目中应用它们,以保护数据的安全。同时,对于软件开发者来说,...

    des-java.rar_Java文件加解密_java 加解密_java加解密

    Java文件加解密是软件开发中的重要一环,特别是在处理敏感数据时,数据的安全性显得尤为重要。本压缩包“des-java.rar”包含了关于Java中使用DES(Data Encryption Standard)算法进行文件加解密的相关示例和资料。...

    Java文件加解密工具

    Java文件加解密工具是一种基于Java Swing开发的实用程序,用于对字符串和文件进行加密和解密操作。这个工具提供了多种加密算法,包括对称加密(如AES, DES)和非对称加密(如RSA),以满足不同安全需求。下面我们将...

    JAVA文件加解密器

    `JAVA文件加解密器`是一个使用Java编程语言编写的工具,旨在为用户提供一种安全的手段来保护他们的文件,通过对文件进行加密和解密操作确保数据不被未经授权的用户访问。这个程序适用于任何类型的文件,无论它们是...

    java 文件加解密程序

    在这个“java 文件加解密程序”中,我们可以看到开发者采用了两种核心的加密技术:对称加密和非对称加密,旨在为文件提供多层保护,增强安全性。 对称加密,顾名思义,指的是加密和解密使用同一密钥的方法。它以其...

    JAVA文件加密解密.pdf

    JAVA文件加密解密.pdf

    RSAjiami.rar_Java文件加解密_java加解密_rsa_rsa加解密_对文件加解密

    以下是文件加解密的伪代码: ```java // 加密文件 FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[BUFFER_SIZE]; ...

    java实现文件加密解密

    "java实现文件加密解密" Java 实现文件的加密与解密是指利用 Java 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...

    java文件加密解密实例(自定义、异或、AES、DES)

    在"encAndDec"这个文件中,很可能包含了使用Java实现的这四种加密解密方法的示例代码。对于初学者或开发者来说,这些示例可以帮助理解加密解密的基本原理,以及如何在Java中运用这些技术。学习和实践这些代码,可以...

    java 文件加密解密 DES PBE RSA DH DSA ECC 等算法代码

    ### Java 文件加密解密关键技术详解 #### 一、概述 在信息安全领域,加密技术是保障数据安全的关键手段之一。本文将详细介绍Java中常用的几种加密算法,包括但不限于DES、PBE、RSA、DH、DSA和ECC等,并提供部分...

    java文件加密解密课程设计.doc

    2. **Java包的导入**:为了实现文件操作和图形用户界面(GUI)的功能,课程设计导入了java.awt、java.awt.event、java.io和javax.swing等包。这些包提供了基本的UI组件、输入输出流以及事件处理机制。 3. **文件...

    DES java 文件加密 解密

    用des算法对文件进行加解密 java语言实现

    JAVA 文件加密解密(附源码)

    在Java编程语言中,文件加密和解密是信息安全领域中的重要技术,用于保护数据免受未经授权的访问。本文将深入探讨如何使用Java实现文件的加密和解密,并结合提供的源码进行详细解释。 首先,我们需要了解加密的基本...

    JEncrypt.jar--java文件加解密图形化工具(3des)

    JEncrypt.jar--java文件加解密图形化工具(3des) ,笔者用java开发的图形化小工具,小巧精致又实用 。在我们日常的工作中难免有些信息(比如网站账号、密码等)需要存储到公司电脑上,但又不希望被他人看到,这时候这款...

    JCT - java加密解密工具包.zip_Java加密_java 加密_jct java_加密 解密_加密工具

    7. **加解密接口**:JCT可能提供了一套统一的API,使得开发者能够方便地调用各种加密算法,而无需深入了解底层实现细节。 8. **文档和源代码**:压缩包中的`jct_doc.zip`可能是JCT工具包的API文档,对于理解和使用...

    Java开发的多种加密解密工具包

    5. **Java Cryptography Extension (JCE)**:Java平台的标准扩展,提供了加密、解密、消息认证码(MAC)和密钥协议等功能。JCE包含各种加密算法的实现,如AES、RSA等,并支持无限强度加密策略。 6. **Key和Cipher...

Global site tag (gtag.js) - Google Analytics