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

时间:2015-10-20 14:48:57

标签: java encryption zip nio2

有一个相对较新的zip filesystem provider,它是JDK7及以上版本的NIO2库的受支持部分。

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

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

this other question非常相似,但它在Android上;在我的情况下,我不需要担心Android,或者支持任何现有的代码。

1 个答案:

答案 0 :(得分:2)

如果您想安装加密的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)。

相关问题