java - 如果加密,从 .zip 文件创建 java.nio.file.FileSystem?

标签 java encryption zip nio2

有一个相对较新的zip filesystem provider这是 JDK7 及更高版本中 NIO2 库受支持的部分。

我特别需要它来支持 java.nio.file.FileSystem类。

它是否与加密的 .zip 文件兼容?如果兼容,如何指定解密 key ?


this other question 非常相似但它是在 Android 上;就我而言,我不需要担心 Android,也不需要支持任何现有代码。

最佳答案

如果您尝试挂载加密的 zip 文件,则会收到错误消息:

Exception in thread "main" java.util.zip.ZipError: invalid CEN header (encrypted entry)
    at com.sun.nio.zipfs.ZipFileSystem.zerror(ZipFileSystem.java:1605)
    at com.sun.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1064)
    at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:130)
    at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:139)
    at java.nio.file.FileSystems.newFileSystem(FileSystems.java:390)    

引起的行是

if ((ZipConstants.CENFLG(arrayOfByte1, i) & 0x1) != 0)
    zerror("invalid CEN header (encrypted entry)");

因此,每个加密条目都会引发异常。因此,ZipFileSystem 目前不支持加密文件 (Java 8)。

关于java - 如果加密,从 .zip 文件创建 java.nio.file.FileSystem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33239852/

相关文章:

mysql - linux命令行根据mysql结果集压缩文件

java - Tomcat 解密 aes 与 Java 主应用程序不同

java - 使用 powermockito 模拟 URL 类时出现问题

java - if(rs.next()) block 放置在 while(rs.next()) 之后,永远不会进入

java - spring data save iterable方法是否使用批量操作并按相同顺序返回结果?

java - 服务器上的 AES key 长度错误无效

swift - 使用 CryptoSwift 和 CryptoJS 的 AES 加密

c++ - C/C++ 的压缩库能够处理数组中超过 32 位的元素

java - ZipOutputStream 不写入文件内容

java - 类型转换和编译时间常量