`
xiongzhenhui
  • 浏览: 209766 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

java压缩加密

阅读更多

1。首先下载winzipaes.jar(http://code.google.com/p/winzipaes/)

 ,bcprov-jdk16-145.jar,bcmail-jdk16-145.jar(http://www.bouncycastle.org/latest_releases.html)这三个jar

 

2.

public class ZipUtil {

 public Boolean compress(String inFile, String outFile, String key) throws Exception {

  Boolean flag = false;
  ArrayList<String> fileList = new ArrayList<String>();
  fileList.add(inFile);
  compress(fileList, outFile, key);
  flag = true;

  return flag;
 }

 public Boolean compress(List<String> inFiles, String outFile, String key) throws Exception {
  Boolean flag = false;
  String tempFile = outFile;
  if (null != key && !"".equals(key)) {
   tempFile = tempFile + "temp";
  }
  ArrayList<String> filePathList = new ArrayList<String>();
  ArrayList<String> fileNameList = new ArrayList<String>();
  if (inFiles != null && inFiles.size() > 0) {
   File file = null;
   for (String fileStr : inFiles) {
    file = new File(fileStr);
    filePathList.add(file.getAbsolutePath());
    fileNameList.add(file.getName());
   }
   makeZip(filePathList, fileNameList, tempFile);

   if (null != key && !"".equals(key)) {
    File temp = new File(tempFile);
    AesZipFileEncrypter enc = new AesZipFileEncrypter(outFile);
    enc.addAll(temp, key);
    enc.close();
    temp.delete();
   }
  }
  flag = true;
  return flag;
 }

 public Boolean compress(String inDir, String outFile, String key, Boolean ifSubDir) throws Exception {
  System.out.println("--inDir--" + inDir);
  System.out.println("--outFile--" + outFile);
  Boolean flag = false;

  String tempFile = outFile;
  if (null != key && !"".equals(key)) {
   tempFile = tempFile + "temp";
  }
  makeZip(new File(inDir), tempFile, ifSubDir);
  if (null != key && !"".equals(key)) {
   File temp = new File(tempFile);
   AesZipFileEncrypter enc = new AesZipFileEncrypter(outFile);
   enc.addAll(temp, key);
   enc.close();
   temp.delete();
  }
  flag = true;
  return flag;
 }

 public Boolean uncompress(String inFile, String outDir, String key, Boolean ifSubDir) throws Exception {

  boolean flag = false;

  if (key == null || "".equals(key)) {
   unZip(inFile, new File(outDir));
  } else {
   AesZipFileDecrypter zipFile = new AesZipFileDecrypter(new File(inFile));
   for (ExtZipEntry entry : zipFile.getEntryList()) {
    if (!ifSubDir) {
     String filename = entry.getName();
     String[] strArray = filename.split(File.separator + File.separator);
     if (strArray != null && strArray.length == 1) {
      zipFile.extractEntry(entry, new File(outDir + File.separator + entry.getName()), key);
     }
    } else {
     zipFile.extractEntry(entry, new File(outDir + File.separator + entry.getName()), key);
    }
   }
  }
  flag = true;
  return flag;
 }

 private void unZip(String zipFilePath, File toUnzipFold) throws IOException {
  if (!toUnzipFold.exists()) {
   toUnzipFold.mkdirs();
  }
  ZipFile zfile = new ZipFile(zipFilePath);
  // zList包含了所有的文件夹、目录信息
  Enumeration zList = zfile.entries();
  byte[] buf = new byte[1024];
  File tmpfile = null;
  File tmpfold = null;
  while (zList.hasMoreElements()) {
   ZipEntry ze = (ZipEntry) zList.nextElement();
   tmpfile = new File(toUnzipFold.getAbsolutePath() + File.separator + ze.getName());
   if (ze.isDirectory()) {
    continue;
   } else {
    tmpfold = tmpfile.getParentFile();
    if (!tmpfold.exists()) {
     tmpfold.mkdirs();
    }
    OutputStream os = new BufferedOutputStream(new FileOutputStream(tmpfile.getAbsolutePath()));
    InputStream is = new BufferedInputStream(zfile.getInputStream(ze));
    int readLen = 0;
    while ((readLen = is.read(buf, 0, 1024)) != -1) {
     os.write(buf, 0, readLen);
    }
    is.close();
    os.close();
   }
  }
 }

 private void makeZip(File fold, String outputZipFileName) throws IOException {
  makeZip(fold, outputZipFileName, false);
 }

 private void makeZip(File fold, String outputZipFileName, boolean recursive) throws IOException {
  if (fold.exists()) {
   ArrayList<File> fileList = new ArrayList<File>();
   listAllFile(fold, fileList, recursive);
   ArrayList<String> filePathList = new ArrayList<String>();
   ArrayList<String> fileNameList = new ArrayList<String>();
   String tmpStr = null;
   int basLen = fold.getAbsolutePath().length();
   for (File f : fileList) {
    tmpStr = f.getAbsolutePath();
    filePathList.add(tmpStr);
    fileNameList.add(tmpStr.substring(basLen + 1, tmpStr.length()));
   }
   makeZip(filePathList, fileNameList, outputZipFileName);
  }
 }

 private void listAllFile(File fold, ArrayList<File> fileList, boolean recursive) {
  File[] files = fold.listFiles();
  for (File f : files) {
   if (recursive && f.isDirectory()) {
    listAllFile(f, fileList, recursive);
   } else if (!f.isDirectory()) {
    fileList.add(f);
   }
  }
 }

 private void makeZip(ArrayList<String> filePathList, ArrayList<String> fileNameList, String outputZipFileName)
   throws IOException {
  byte[] buf = new byte[1024];
  File outputZipFile = new File(outputZipFileName);
  File outputZipParentFile = outputZipFile.getParentFile();
  if (!outputZipParentFile.exists()) {
   outputZipParentFile.mkdirs();
  }

  ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outputZipFile));
  int len = -1;
  for (int i = 0; i < filePathList.size(); i++) {
   if (filePathList.get(i) != null) {
    FileInputStream in = new FileInputStream(filePathList.get(i));
    out.putNextEntry(new ZipEntry(fileNameList.get(i)));
    while ((len = in.read(buf)) > 0) {
     out.write(buf, 0, len);
    }
    out.closeEntry();
    in.close();
   }
  }
  out.close();
 }

 public static void main(String args[]) throws Exception {
  ZipUtil z = new ZipUtil();
  // 压缩
  z.compress("c:/a.txt", "c:/b.zip", "123");
  z.uncompress("c:/b.zip", "E:/", "123", true);
  System.out.println("compress ok----------------------------------");
 }
}

分享到:
评论

相关推荐

    java 压缩加密项目

    这个"java 压缩加密项目"是一个实际的应用实例,它展示了如何使用Java处理文件的压缩和加密操作,特别是在Web环境中,如jsp和servlet的使用。项目的开发环境是JDK 1.5,IDE为Myeclipse 8.5,并且已经在Tomcat 6...

    java生成PDF,java加密压缩文件

    前段时间由于项目需要,使用java生成PDF文件,然后将文件压缩成ZIP格式,同时对压缩文件进行加密,先将代码及jar包上传供大家参考,并希望大家共同完善和学习。 java生成PDF,java加密压缩文件并,java生成PDF后压缩...

    Java实现对文件夹的加密码压缩(绝对可用)

    JAVA实现对文件夹“加密码压缩” 此资源解压后为一个文件夹,就是一个package包 (压缩后为Zip文件) 无需导入任何个人jar包 压缩后效果等同于用winrar给压缩包加密码 时间紧迫,暂时存在中文文件夹名称乱码问题 不...

    java zip加密压缩

    在Java编程语言中,我们可以利用...以上就是关于"java zip加密压缩"的知识点,包括CSV文件的处理、ZIP文件的压缩、AES加密的原理及整合这些技术来实现文件的加密压缩。希望这些信息对你理解和实现相关功能有所帮助。

    java 操作Zip文件(压缩、解压、加密).zip

    Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...

    Java压缩解压RSA加密程序源代码

    总的来说,这个Java压缩解压RSA加密程序源代码结合了数据压缩和非对称加密两大技术,提供了一种在传输或存储数据时兼顾效率和安全性的解决方案。理解并掌握这些概念对于任何从事Java开发,尤其是涉及网络安全和数据...

    完善的java版本的压缩加密功能

    几种通用的解压缩JAVA版本实现,支持RAR ZIP 7Z等,同时还支持对压缩的文件进行加密解密。

    java生成PDF 然后加密压缩文件

    前段时间由于项目需要,使用java生成PDF文件,然后将文件压缩成ZIP格式,同时对压缩文件进行加密,先将代码及jar包上传供大家参考,并希望大家共同完善和学习。 java生成PDF,java加密压缩文件并,java生成PDF后压缩...

    java加密解密zip压缩包

    在Java编程环境中,处理文件的压缩与解压缩是常见的任务,而涉及到安全性,加密和解密就显得尤为重要。本文将详细讲解如何使用Java实现ZIP压缩包的加密与解密。 首先,我们需要理解加密的基本概念。加密是将明文...

    压缩加密JS脚本C#源码

    标题中的“压缩加密JS脚本C#源码”是指一种使用C#编程语言实现的工具,它可以对JavaScript(JS)脚本进行压缩和加密处理。这样的工具在开发Web应用程序时非常有用,因为压缩JS可以减少文件大小,提高网页加载速度,...

    JAVAclass加密工具

    加密过程通常包括混淆、压缩和加密几个步骤,使得原始的Class文件变得难以反编译和分析。这样可以降低代码被盗用或恶意篡改的风险,提高软件的安全性。 加密工具的操作通常简单且实用,适合各种技术水平的开发者...

    zip4j-java加密压缩

    《使用zip4j进行Java加密压缩与解压详解》 在Java编程中,处理文件的压缩和解压是一项常见的任务,而zip4j库提供了一种便捷的方式,它支持文件和文件夹的加密压缩以及解压操作。zip4j不仅简单易用,还提供了强大的...

    JAVA 文件压缩及加密

    3. 将压缩和加密结合:在文件压缩前对其进行加密,然后压缩加密后的数据。这可以提高数据的安全性。首先对文件进行AES加密,然后将加密后的文件进行ZIP或GZIP压缩。解压时先解压缩,再解密。 ```java public void ...

    Aes加密压缩(java)

    总结起来,Java实现AES加密和压缩的流程包括:生成AES密钥、使用Cipher进行加密和解密、使用GZIP进行压缩和解压缩,以及使用Base64进行编码和解码。这样的组合既保证了数据的安全性,又降低了存储和传输的成本。在...

    Java解密加密及压缩算法实例.rar

    在Java编程语言中,加密和压缩是两个重要的领域,它们广泛应用于数据安全和存储优化。本资源"Java解密加密及压缩算法实例.rar"提供了一系列的示例代码,旨在帮助开发者理解和应用各种加密和压缩算法。以下是这些算法...

    文件压缩与RSA加密JAVA实现

    本项目“文件压缩与RSA加密JAVA实现”提供了一个基于JAVA的解决方案,允许用户对文件进行压缩并利用RSA算法进行加密。下面将详细阐述这两个主要知识点。 **文件压缩** 文件压缩是一种减少文件大小的技术,通过去除...

    Java公钥加密私钥解密.rar

    这个名为"Java公钥加密私钥解密.rar"的压缩包文件包含了一个使用Java实现的公钥/私钥加密解密的示例。在这个案例中,开发者可能使用了Java的Java Cryptography Extension (JCE) 来实现RSA算法,这是一种非对称加密...

    ZipUtil加密解密压缩工具

    加密压缩 解密解压 java编写 不需jdk环境 exe双击即可运行

    JAVA压缩包加密解密方法及jar包

    在Java编程环境中,对文件进行压缩和加密是常见的需求,特别是在数据存储和传输时为了减小体积和保证安全。本文将详细介绍如何使用Java实现文件的压缩、加密以及解压缩,并探讨涉及的jar包和源码。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics