0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Java中加密和解密zip文件

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-08 11:48 次阅读

在本文中,我们来学习如何用Zip4j库创建受密码保护的压缩文件并将其解压。

依赖

让我们先把 zip4j 依赖关系添加到我们的 pom.xml 文件中。

< dependency >
    < groupId >net.lingala.zip4j< /groupId >
    < artifactId >zip4j< /artifactId >
    < version >2.9.0< /version >
< /dependency >

压缩一个文件

首先,我们将使用ZipFile addFile()方法将一个名为aFile.txt的文件压缩到一个名为compressed.zip的有密码保护的 zip 文件。

ZipParameters zipParameters = new ZipParameters();
zipParameters.setEncryptFiles(true);
zipParameters.setCompressionLevel(CompressionLevel.HIGHER);
zipParameters.setEncryptionMethod(EncryptionMethod.AES);

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.addFile(new File("aFile.txt"), zipParameters);

setCompressionLevel一行是可选的。我们可以从FASTESTULTRA级别中选择(默认是NORMAL)。

在这个例子中,我们使用了AES加密。如果我们想使用Zip标准加密,我们只需用ZIP_STANDARD替换AES

注意,如果文件 "aFile.txt "在磁盘上不存在,该方法将抛出一个异常。net.lingala.zip4j.exception.ZipException File does not exist: …

为了解决这个问题,我们必须确保该文件是手动创建并放置在项目文件夹中,或者我们必须从Java中创建它。

File fileToAdd = new File("aFile.txt");
if (!fileToAdd.exists()) {
    fileToAdd.createNewFile();
}

另外,在我们完成了新的ZipFile之后,需要及时关闭资源:

zipFile.close();

压缩多个文件

让我们修改一下代码,以便我们能够一次压缩多个文件。

ZipParameters zipParameters = new ZipParameters();
zipParameters.setEncryptFiles(true);
zipParameters.setEncryptionMethod(EncryptionMethod.AES);

List< File > filesToAdd = Arrays.asList(
  new File("aFile.txt"),
  new File("bFile.txt")
);

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.addFiles(filesToAdd, zipParameters);

我们不使用addFile方法,而是使用addFiles()并传入一个List的文件。

压缩一个目录

我们可以简单地用addFolder代替addFile方法来压缩一个文件夹。

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.addFolder(new File("/users/folder_to_add"), zipParameters);

创建一个分割的压缩文件

我们可以通过使用createSplitZipFilecreateSplitZipFileFromFolder方法,``将压缩文件分割成几个文件。

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
int splitLength = 1024 * 1024 * 10; //10MB
zipFile.createSplitZipFile(Arrays.asList(new File("aFile.txt")), zipParameters, true, splitLength);
zipFile.createSplitZipFileFromFolder(new File("/users/folder_to_add"), zipParameters, true, splitLength);

splitLength的单位是字节。

提取所有文件

提取文件也同样简单。我们可以用extractAll()方法从我们的compressed.zip中提取所有文件。

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.extractAll("/destination_directory");

提取单个文件

如果我们只想从compressed.zip中提取一个文件,我们可以使用extractFile()方法。

ZipFile zipFile = new ZipFile("compressed.zip", "password".toCharArray());
zipFile.extractFile("aFile.txt", "/destination_directory");

总结

综上所述,我们已经学会了如何用Zip4j库在Java中创建受密码保护的压缩文件并将其解压。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102994
  • Zip
    Zip
    +关注

    关注

    0

    文章

    17

    浏览量

    8578
  • 磁盘
    +关注

    关注

    1

    文章

    338

    浏览量

    24883
  • 文件
    +关注

    关注

    1

    文章

    540

    浏览量

    24402
  • 加密
    +关注

    关注

    0

    文章

    293

    浏览量

    23592
收藏 人收藏

    评论

    相关推荐

    CC2541上微信的加密和解密

    本帖最后由 冒汗的心情 于 2016-4-15 10:42 编辑 CC2541上微信的加密和解密CC2541连接微信有两种,一个是精简协议,一个是完整协议,精简协议没有身份验证和加解密,而且
    发表于 04-13 11:39

    labview加密解密文件

    本帖最后由 wang060102122 于 2017-9-8 14:50 编辑 论坛有位网友分布的加密和解密文件夹小程序,其中加密可以正常使用,
    发表于 09-08 14:45

    ZigBee的加密和解密介绍

    Center(信任中心)的概念,本章内容主要讲解的是TC的交换秘钥过程。1. 非对称加密算法。* 对称加密算法在加密和解密时使用的是同一个秘钥,而非对称
    发表于 04-17 18:12

    何在Python中加密和解密数据

      加密是对信息进行编码的过程,只有授权方才能访问它。这一点至关重要,因为它可以安全地保护您不希望任何人看到或访问的数据。在本文中,您将学习如何使用Python使用加密 库对文件或任何字节对象,也
    发表于 08-07 17:45

    如何使用CAAM加密/解密数据存储blobfile?

    /Decrypt Data Rev. 1 — 26 August 2021。我可以用kb_test加密和解密我的文件,但是如何存储blobfile 我不能把blobfile放在本地目录下,是否也可以把blobfile存放在key
    发表于 04-03 06:24

    IMXRT1170 Evk可以使用IEE进行加密和解密以读写外部闪存吗?

    我正在使用 IMXRT1170 Evk,我可以使用IEE(内联加密引擎)进行加密和解密以读写外部闪存吗?请找到下图,您能告诉我们安全 RM 手册的8.1.2 部分和 IMXRT1170RM 手册的7.10 部分有什么区别吗?
    发表于 04-03 09:14

    RT1020总线加密引擎是否加密和解密

    总线加密引擎是否加密和解密? 例如,如果我正在运行一个加密的 XIP 应用程序(来自串行或闪存),并且我希望它向闪存的不同区域写入一些内容,会发生什么?是写的时候
    发表于 05-10 06:10

    数据加密和解密,数据加密和解密原理是什么?

    数据加密和解密,数据加密和解密原理是什么? 随着Internet 的普及,大量的数据、文件在Internet 传送,因此在客观上就需要一种
    发表于 03-19 13:46 7051次阅读

    Java加密解密的艺术_梁栋

    全书包含 3 个部分,基础篇对Java 企业级应用的安全知识、密码学核心知识、与Java 加密相关的API 和通过权限文件加强系统安全方面的知识进行了全面的介绍;实践篇不仅对电子邮件传
    发表于 12-30 14:59 0次下载
    <b class='flag-5'>Java</b><b class='flag-5'>加密</b>与<b class='flag-5'>解密</b>的艺术_梁栋

    JAVA教程之用Zip压缩多个文件

    JAVA教程之用Zip压缩多个文件,很好的JAVA的资料,快来学习吧
    发表于 04-11 17:28 3次下载

    C语言教程之字符串加密和解密

    C语言教程之字符串加密和解密,很好的C语言资料,快来学习吧。
    发表于 04-25 15:49 0次下载

    Wannacry的逆向分析及加密文件解密

    Wannacry的逆向分析及加密文件解密
    发表于 09-07 09:59 10次下载
    Wannacry的逆向分析及<b class='flag-5'>加密</b><b class='flag-5'>文件</b>的<b class='flag-5'>解密</b>

    java实现非对称加密算法的过程

    对称式加密解密方式是加密方式的逆运算,即加密和解密使用的是同一个密钥(初等加密算法)。非对称式
    发表于 12-10 10:54 5045次阅读
    <b class='flag-5'>java</b>实现非对称<b class='flag-5'>加密</b>算法的过程

    单片机的加密和解密

    由于工作的关系经常会编写单片机程序,也经常有客户抱怨还没有量产多久,程序就被破解了,于是不断的研究加密和解密技术,经过5年来不断的学习和同行的交流,目前的程序破解的可能性已经大大降低了,下面说下具体
    发表于 01-24 10:57 2次下载

    GPG加密和解密文件在Linux中使用

    GPG(GNU Privacy Guard)是一种免费的开源加密软件,用于保护计算机数据的机密性和完整性。 它使用非对称加密算法,也称为公钥加密算法,其中数据被加密
    的头像 发表于 05-12 14:47 1605次阅读
    GPG<b class='flag-5'>加密</b><b class='flag-5'>和解密</b><b class='flag-5'>文件</b>在Linux中使用