java对压缩文件进行加密,winrar和好压 直接输入解密密码来使用
<!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j -->
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>1.3.2</version>
</dependency>
或者下载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<File> filesToAdd = new ArrayList<File>();
File file = new File(filePath);
filesToAdd.add(file); ZipFile zipFile = new ZipFile(zipFileName);
zipFile.addFiles(filesToAdd, parameters);//this line does works
System.err.println("end");
} catch (ZipException e) {
e.printStackTrace();
}
} /**
* 加密1,winrar,好压2345可直接输入密码解压
*/
public static void zipFileStream(InputStream is,String zipFileName,String password) {try {
ZipParameters parameters = setParam(password);
//addStream,多设置两个参数,缺一不可
parameters.setFileNameInZip("yourfilename.xlsx");
parameters.setSourceExternalStream(true); ZipFile zipFile = new ZipFile(zipFileName);
zipFile.addStream(is, parameters);
} catch (ZipException e) {
e.printStackTrace();
}
}
public static ZipParameters setParam(String password){
//设置压缩文件参数
ZipParameters parameters = new ZipParameters();
//设置压缩方法
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
//设置压缩级别
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
//设置压缩文件是否加密
parameters.setEncryptFiles(true);
//设置aes加密强度
parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
//设置加密方法
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
//设置密码
parameters.setPassword(password.toCharArray());
return parameters;
} public static void main(String[] args) throws Exception {
try{
long l1 = System.currentTimeMillis(); // //加密,addFile
// ZipComplexCipherUtil.zipFileAndEncrypt("D:\\aaa\\zhmm_db.xlsx","D:\\aaa\\ccc.zip","123"); // 加密,addStream
InputStream in = new FileInputStream("D:\\aaa\\zhmm_db.xlsx");
ZipComplexCipherUtil.zipFileStream(in,"D:\\aaa\\ccc.zip","123"); long l2 = System.currentTimeMillis();
System.out.println((l2 - l1) + "毫秒.");
System.out.println(((l2 - l1) / 1000) + "秒.");
}catch(Exception ex){
ex.printStackTrace();
} }
}
java对压缩文件进行加密,winrar和好压 直接输入解密密码来使用的更多相关文章
- 【转载】使用Winrar对压缩文件进行加密,并且给定解压密码
有时候我们从网上下载的压缩包文件,如.rar文件.zip文件等,解压的时候需要输入解压密码才可顺利解压,否则解压失败.其实像这种情况,是压缩包制作者在压缩文件的时候对压缩文件进行了加密,输入了压缩包解 ...
- java ZIP压缩文件
问题描述: 使用java ZIP压缩文件和目录 问题解决: (1)单个文件压缩 注: 以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...
- Java生成压缩文件(zip、rar 格式)
jar坐标: <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</ar ...
- java ZipOutputStream压缩文件,ZipInputStream解压缩
java中实现zip的压缩与解压缩.java自带的 能实现的功能比较有限. 本程序功能:实现简单的压缩和解压缩,压缩文件夹下的所有文件(文件过滤的话需要对File进一步细节处理). 对中文的支持需要使 ...
- java生成压缩文件
在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载.所以自己写了一个压缩文件的工具类.该工具类支持单个文件和文件夹压缩.放代码: import java.io.BufferedOutput ...
- java打包压缩文件
package com.it.simple.util; import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream ...
- Java实现压缩文件与解压缩文件
由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或 ...
- Java读取压缩文件信息
不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件.(后续再根据文件头或内容吧) zip: import java.util.zip.ZipEntry;import java.util ...
- java zip 压缩文件
zip压缩:ZipOutputStream.ZipFile.ZipInputStream 三个类的作用 一段 java zip 压缩的代码: File dir = new File("C ...
随机推荐
- Docker01-学习环境
目录 安装VMware 安装Ubutu CRT连接Ubutu 设置root密码 安装VMware 下载 VMware-workstation-15 https://dwz.cn/sSAat65l 密码 ...
- Linux用户组和权限管理
Linux用户组和权限管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux的安全模型 1>.安全3A 这并不是Linux特有的概念,在很多领域都有3A的概念 ...
- ActiveMQ-启动服务异常
如果报这种异常: Caused by: java.io.IOException: Failed to bind to server socket: tcp://0.0.0.0:61616?maximu ...
- XJCO1711 Procedural Programming
University of Leeds School of ComputingProcedural Programming XJCO1711Semester 1, 2019-2020Coursewor ...
- B-树,B+树,B*树总结
链接地址:https://blog.csdn.net/v_JULY_v/article/details/6530142 B+树 B+ 树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一棵B+ ...
- OI歌曲汇总
在学习的间隙,我们广大的OIer创作了许多广为人知的歌曲 这里来个总结 (持续更新ing......) Lemon OI 葛平 Lemon OI chen_zhe Lemon OI kkksc03 膜 ...
- Truffle - 以太坊Solidity编程语言开发框架
http://truffle.tryblockchain.org/ Truffle框架 Truffle是什么? Truffle是针对基于以太坊的Solidity语言的一套开发框架. 本身基于JavaS ...
- 分库分表相关 - hash与range结合去分库分表
相关文章1 整体看下来通过hash取模去分库,然后根据range去分到哪个区间的表中. 具体还要实践下来.
- SPA和MVVM设计思想
Vue基础篇设计模式SPAMVVMVue简介Vue的页面基本使用Vue的全局环境配置基本交互 插值表达式基础指令 v-text v-html v-pre v-once v-cloak v-on MVV ...
- static final与final修饰的常量有什么不同
最近重头开始看基础的书,对一些基础的概念又有了一些新的理解,特此记录一下 static final修饰的常量: 静态常量(static修饰的全部为静态的),编译器常量,编译时就确定其值(java代码经 ...