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 语言将资源文件(包括图片、动画等类型)进行简单的加密和解密。这种策略的原因和好处是将准备好的资源存储在云上,使用时通过网络进行读取即可,...
《深入理解ENC文件加密解密工具:以PrimaSoft Encryption Utility为例》 在信息安全日益重要的今天,文件加密解密工具成为保护数据隐私的关键工具。"ENC文件加密解密工具",特别是PrimaSoft Encryption Utility,是...
C#作为一种强大的面向对象的编程语言,提供了丰富的库和工具来实现文件的加密和解密。本项目"文件加密解密(完整项目)"专注于利用C#进行文件的安全处理,确保数据在传输和存储时的隐私性。 一、C#加密技术基础 C#...
文件加密解密系统是一种用于保护数据安全的重要工具,它能够对个人或组织的敏感信息进行加密,确保在传输或存储时不受未经授权的访问。在这个信息化的时代,数据安全已经成为企业和个人都必须关注的问题,因此,了解...
在这个特定的案例中,"MFC实现文本文件加密解密"是一个使用MFC框架编写的程序,它允许用户对文本文件进行加密和解密操作,确保敏感数据在传输或存储时的安全性。 在VC2010环境下,开发者通常会利用MFC的类库,如...
Java文件加解密工具类,使用AES算法,256位秘钥。srcFile为输入文件,destFile为输出文件。
文件加解密技术就是为了解决这个问题,确保数据的隐私和安全。这里我们关注的是一个C#实现的文件加解密解决方案,它涵盖了对XML、TXT、二进制文件以及文本文件的加解密操作,并使用了MD5哈希算法来增强安全性。 ...
3. **文件加解密**:将DES应用于文件加密时,通常需要将大文件切分成若干小的数据块,然后逐个进行DES加密。加密后的数据块再组合成加密文件。解密过程则是相反的,先将加密文件拆分成块,然后使用相同的密钥逐一...
在本文中,我们将深入探讨DES算法的原理、实现过程以及如何用Java来实现在文件加解密上的应用。 DES算法基于Feistel结构,它将明文分为64位的数据块,通过一系列的替换(Substitution)和置换(Permutation)操作...
《中兴光猫cfg配置文件加密解密工具详解》 在现代家庭网络中,光猫作为光纤通信的重要设备,承担着宽带接入与网络分配的重要角色。中兴作为全球知名的通信设备供应商,其生产的光猫设备广泛应用于各类网络环境中。...
《VC++文件加解密程序详解》 在计算机科学领域,数据安全至关重要,尤其是在涉及到敏感信息时。文件的加解密技术为此提供了保障,确保只有授权的用户才能访问特定文件。本篇将深入探讨利用VC++(Visual C++)进行...
本项目“C# 文件加解密工具”正是利用C#语言特性实现的一种实用工具,它能够对任意类型的文件进行加密和解密,同时也支持通过注册表设置,使得用户可以通过双击文件直接启动程序,增强了用户体验。 首先,我们来...
【标题】"全能文件加密解密源码.zip"是一个包含Visual Studio工程的压缩包,它提供了C#语言编写的源代码,用于实现文件的加密和解密功能。这个项目对于那些想要深入理解加密和解密机制,或者需要在自己的应用程序中...
在C#编程环境中,文件加密和解密是保护数据安全的重要技术。本文将详细探讨如何使用C#实现文件的加密和解密,以及涉及到的相关知识点。 1. **基础概念** - **加密**:加密是一种将明文转换为密文的过程,目的是...
在"DES文件加密解密算法实现"中,提到的CBC(Cipher Block Chaining)模式是一种常用的块加密模式。在CBC模式下,每个明文块都会与前一个密文块进行异或操作后再进行加密。这样做的目的是为了增加加密的复杂性和安全...
这个"DES文件加密解密系统"是使用C语言实现的一个项目,目的是让学生理解DES算法的工作原理并能实际应用。 DES算法的核心是Feistel网络,它将一个64位的数据块分成左右两半,通过一系列迭代的加密过程来改变原始...
标题中的“移动定制版华为HG8546M配置文件加密解密工具”是指专为华为 HG8546M 路由器设计的一款软件工具,主要用于处理该型号路由器的配置文件。这款工具能够对配置文件进行加密和解密操作,确保数据的安全性和隐私...
根据提供的文件信息,本文将对"C语言文件加密解密系统"进行详细解析,重点在于理解其功能、工作原理以及核心代码实现。 ### C语言文件加密解密系统 #### 概述 该系统是一个基于C语言编写的文件加密解密工具,能够...
文件加解密是一种常见的技术手段,用于保护数据免受未经授权的访问、篡改或泄露。本压缩包"文件加解密.rar"可能包含了一些关于如何对文件进行加密和解密的工具或者教程,适用于个人和企业用户,确保信息安全。 加密...