`
ll_茉莉花开
  • 浏览: 3824 次
  • 性别: Icon_minigender_2
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

文件加解密

阅读更多
package com.asc;

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
 * 加解密Excel
 * @author liuli
 *
 */
public class ExcelReaderTest {
	public static void main(String args[]){
//		encryptExcelFile();
		decryptExcelFile();
	}
	/**
	 * excel加密
	 */
	private static void encryptExcelFile() {
		FileInputStream inputStream=null;//声明一个输入流
		FileOutputStream outputStream=null;//声明一个输出流
		//构造密钥,指定算法为AES
		SecretKeySpec skeySpec=new SecretKeySpec("AgilesClientLons".getBytes(), "AES");
		try {
			//设置密码算法为:AES,模式为ECB,填充模式为PKCS5Padding
			Cipher cipher=Cipher.getInstance("AES/ECB/PKCS5Padding");
			//初始化cipher为加密算法
			cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
			inputStream=new FileInputStream(new File("f://excelTest.xlsx"));//得到未加密码的文件流
			outputStream=new FileOutputStream(new File("f://excel_encrypt.xlsx"));
			//构造一个缓冲区
			byte [] buffer=new byte[1024];
			int len=0;
			while((len=inputStream.read(buffer))!=-1){
				outputStream.write(cipher.update(buffer,0,len));
			}
			outputStream.write(cipher.doFinal());
			outputStream.flush();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(null!=inputStream){
				try {
					inputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}if(null!=outputStream){
				try {
					outputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	/**
	 * excel解密
	 */
	private static void decryptExcelFile() {
		FileInputStream inputStream = null;// 声明一个输入流
		FileOutputStream outputStream = null;// 声明一个输出流
		// 构造密钥,指定算法为AES
		SecretKeySpec skeySpec = new SecretKeySpec(
				"AgilesClientLons".getBytes(), "AES");
		try {
			// 设置密码算法为AES,模式为ECB,填充模式为:PKCS5Padding
			Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
			// 初始化设置为解密
			cipher.init(Cipher.DECRYPT_MODE, skeySpec);
			inputStream = new FileInputStream(new File("F://014901//20110302124720136_TSKF_SAL_CUR_20101201.XLS"));// 得到test.xls的文件流
			outputStream = new FileOutputStream("F://014901_decrypt//20110302124720136_TSKF_SAL_CUR_20101201_decrypt.xls");
			// 声明一个缓冲区
			byte[] buffer = new byte[1024];
			int lenght = 0;
			while ((lenght = inputStream.read(buffer)) != -1) {
				outputStream.write(cipher.update(buffer, 0, lenght));//复制
			}
			outputStream.write(cipher.doFinal());// 结束加密
			outputStream.flush();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (null != inputStream) {
				try {
					inputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (null != outputStream) {
				try {
					outputStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}
	/**
	 * file change byte
	 * 
	 * @param f
	 * @return
	 */
	public byte[] getBytesFromFile(File f) {
		if (f == null) {
			return null;
		}

		try {
			FileInputStream stream = new FileInputStream(f);
			ByteArrayOutputStream out = new ByteArrayOutputStream(2046);

			byte[] b = new byte[2046];
			int n;
			while ((n = stream.read(b)) != -1) {
				out.write(b, 0, n);
			}
			stream.close();
			out.close();

			return out.toByteArray();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return null;
	}

	/**
	 * byte change file
	 * 
	 * @param b
	 * @param outputFile
	 * @return
	 */

	public boolean  getFileFromBytes(byte[] b, String outputFile) {
		BufferedOutputStream stream = null;
		File file = null;
		try {
			file = new File(outputFile);
			if (!file.exists()) {
				file.mkdirs();
			}
			FileOutputStream fstream = new FileOutputStream(file);
			stream = new BufferedOutputStream(fstream);
			stream.write(b);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (stream != null) {
				try {
					stream.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}
		return false;
	}

}
分享到:
评论

相关推荐

    文件加解密软件

    "文件加解密软件"就是一种工具,旨在确保用户能够保护他们的敏感信息,防止未经授权的访问。这种软件通常提供了简单易用的功能,使得普通用户也能轻松进行文件的加密和解密操作。 加密软件的主要功能是通过特定的...

    java实现文件加密解密

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

    ENC文件加密解密工具

    《深入理解ENC文件加密解密工具:以PrimaSoft Encryption Utility为例》 在信息安全日益重要的今天,文件加密解密工具成为保护数据隐私的关键工具。"ENC文件加密解密工具",特别是PrimaSoft Encryption Utility,是...

    C#文件加密解密(完整项目)

    C#作为一种强大的面向对象的编程语言,提供了丰富的库和工具来实现文件的加密和解密。本项目"文件加密解密(完整项目)"专注于利用C#进行文件的安全处理,确保数据在传输和存储时的隐私性。 一、C#加密技术基础 C#...

    文件加密解密系统

    文件加密解密系统是一种用于保护数据安全的重要工具,它能够对个人或组织的敏感信息进行加密,确保在传输或存储时不受未经授权的访问。在这个信息化的时代,数据安全已经成为企业和个人都必须关注的问题,因此,了解...

    MFC 实现文本文件加密解密

    在这个特定的案例中,"MFC实现文本文件加密解密"是一个使用MFC框架编写的程序,它允许用户对文本文件进行加密和解密操作,确保敏感数据在传输或存储时的安全性。 在VC2010环境下,开发者通常会利用MFC的类库,如...

    Java文件加解密工具类

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

    文件加解密C#源码

    文件加解密技术就是为了解决这个问题,确保数据的隐私和安全。这里我们关注的是一个C#实现的文件加解密解决方案,它涵盖了对XML、TXT、二进制文件以及文本文件的加解密操作,并使用了MD5哈希算法来增强安全性。 ...

    文件加解密des

    3. **文件加解密**:将DES应用于文件加密时,通常需要将大文件切分成若干小的数据块,然后逐个进行DES加密。加密后的数据块再组合成加密文件。解密过程则是相反的,先将加密文件拆分成块,然后使用相同的密钥逐一...

    des加密算法实现任意文件加解密

    在本文中,我们将深入探讨DES算法的原理、实现过程以及如何用Java来实现在文件加解密上的应用。 DES算法基于Feistel结构,它将明文分为64位的数据块,通过一系列的替换(Substitution)和置换(Permutation)操作...

    中兴光猫cfg配置文件加密解密工具ctce8_cfg_tool

    《中兴光猫cfg配置文件加密解密工具详解》 在现代家庭网络中,光猫作为光纤通信的重要设备,承担着宽带接入与网络分配的重要角色。中兴作为全球知名的通信设备供应商,其生产的光猫设备广泛应用于各类网络环境中。...

    vc++文件加解密 程序.zip

    《VC++文件加解密程序详解》 在计算机科学领域,数据安全至关重要,尤其是在涉及到敏感信息时。文件的加解密技术为此提供了保障,确保只有授权的用户才能访问特定文件。本篇将深入探讨利用VC++(Visual C++)进行...

    C# 文件加解密工具

    本项目“C# 文件加解密工具”正是利用C#语言特性实现的一种实用工具,它能够对任意类型的文件进行加密和解密,同时也支持通过注册表设置,使得用户可以通过双击文件直接启动程序,增强了用户体验。 首先,我们来...

    全能文件加密解密源码.zip

    【标题】"全能文件加密解密源码.zip"是一个包含Visual Studio工程的压缩包,它提供了C#语言编写的源代码,用于实现文件的加密和解密功能。这个项目对于那些想要深入理解加密和解密机制,或者需要在自己的应用程序中...

    FileEncryption.rar C#文件加密解密

    在C#编程环境中,文件加密和解密是保护数据安全的重要技术。本文将详细探讨如何使用C#实现文件的加密和解密,以及涉及到的相关知识点。 1. **基础概念** - **加密**:加密是一种将明文转换为密文的过程,目的是...

    DES文件加密解密算法实现

    在"DES文件加密解密算法实现"中,提到的CBC(Cipher Block Chaining)模式是一种常用的块加密模式。在CBC模式下,每个明文块都会与前一个密文块进行异或操作后再进行加密。这样做的目的是为了增加加密的复杂性和安全...

    DES文件加密解密系统 密码学课设

    这个"DES文件加密解密系统"是使用C语言实现的一个项目,目的是让学生理解DES算法的工作原理并能实际应用。 DES算法的核心是Feistel网络,它将一个64位的数据块分成左右两半,通过一系列迭代的加密过程来改变原始...

    移动定制版华为HG8546M配置文件加密解密工具

    标题中的“移动定制版华为HG8546M配置文件加密解密工具”是指专为华为 HG8546M 路由器设计的一款软件工具,主要用于处理该型号路由器的配置文件。这款工具能够对配置文件进行加密和解密操作,确保数据的安全性和隐私...

    C语言文件加密解密系统

    根据提供的文件信息,本文将对"C语言文件加密解密系统"进行详细解析,重点在于理解其功能、工作原理以及核心代码实现。 ### C语言文件加密解密系统 #### 概述 该系统是一个基于C语言编写的文件加密解密工具,能够...

    文件加解密.rar

    文件加解密是一种常见的技术手段,用于保护数据免受未经授权的访问、篡改或泄露。本压缩包"文件加解密.rar"可能包含了一些关于如何对文件进行加密和解密的工具或者教程,适用于个人和企业用户,确保信息安全。 加密...

Global site tag (gtag.js) - Google Analytics