2017-07-18 63 views
-1

我無法使用Java解壓縮密碼保護的zipx文件(包含xlsx)。加密方法AES-256 LZMA。如何使用Java提取密碼保護的zipx文件(包含xlsx)?

我試過Apache Common Compress和Lingla.zip4j。但無法提取。 似乎壓縮類型LZMA不支持Lingla.zip4j。

Image: For CRC and Encryption method detail

有沒有其他辦法,我可以提取?

阿帕奇公用代碼

File file = new File("H:\\WorkDoc\\afile.zipx");  
      byte[] inputData = new byte[(int) file.length()]; 
      FileInputStream fis = new FileInputStream(file); 
      fis.read(inputData); //read file into bytes[] 
      fis.close(); 

      String password = "password"; 
      byte[] pass = password.getBytes(); 

      SeekableInMemoryByteChannel inMemoryByteChannel = new SeekableInMemoryByteChannel(inputData); 
      SevenZFile sevenZFile = new SevenZFile(inMemoryByteChannel, pass); 
      SevenZArchiveEntry entry = sevenZFile.getNextEntry(); 
      sevenZFile.read(); // read current entry's data 

錯誤

java.io.IOException: Bad 7z signature 
    at org.apache.commons.compress.archivers.sevenz.SevenZFile.readHeaders(SevenZFile.java:250) 
    at org.apache.commons.compress.archivers.sevenz.SevenZFile.<init>(SevenZFile.java:165) 
    at org.apache.commons.compress.archivers.sevenz.SevenZFile.<init>(SevenZFile.java:156) 
    at org.apache.commons.compress.archivers.sevenz.SevenZFile.<init>(SevenZFile.java:136) 
    at com.concept.utilities.zip.ApacheComm.main(ApacheComm.java:33) 
+1

您是否有密碼?你知道它是以什麼順序壓縮和加密的(就像是加密的zip文件,或者是加密的zip文件)?你有沒有你寫的代碼到目前爲止告訴我們你做了什麼?也許代碼是錯誤的... –

+1

請閱讀[在什麼情況下,我可以添加「緊急」或其他類似的短語到我的問題,以獲得更快的答案?](// meta.stackoverflow.com/q/326569) - 總結是這不是解決志願者問題的理想方式,並且可能對獲得答案起反作用。請不要將這添加到您的問題。 – halfer

回答

0

根據this blog,包net.contrapunctus.lzma提供了與底層LZMA編碼器和交互LzmaInputStream和LzmaOutputStream的實現解碼器運行在不同的線程中。所以,它可能對你有用。

+0

你怎麼知道他需要Lzma? –

+0

@rabbitguy OP說:*「似乎壓縮類型LZMA不支持Lingla.zip4j。」* –

+0

@Ali您能否提供一些示例代碼? –