Apache的POI解密doc文件无法处理加密的文件?(Apache POI decrypt doc

2019-10-24 06:00发布

public static void decryptedDoc(String path,String[] password) throws FileNotFoundException, IOException{
  FileOutputStream fileOut = null;
  for(int i=0;i<password.length;i++){
//  try{
  Biff8EncryptionKey.setCurrentUserPassword(password[i]);
  NPOIFSFileSystem fs = new NPOIFSFileSystem( new FileInputStream(path));
  HWPFDocument doc=new HWPFDocument(fs.getRoot());
  Biff8EncryptionKey.setCurrentUserPassword(null);
  String neweachpath=path.substring(0, path.length()-4)+"_decrypted"+path.substring(path.length() -4);
  fileOut = new FileOutputStream(neweachpath);
  doc.write(fileOut);
  fileOut.flush(); 
  //}
 /* catch (EncryptedDocumentException e){
      System.out.println("wrong password for"+path+password[i]);
  }*/
  }

我想利用这个代码解密文档文件。

我引用这个代码的Apache POI加密 。 它真正的作品为DOCX和XLS,XLSX文件。 不过,这并不在这里工作,始终即使密码正确以下情况例外。

org.apache.poi.EncryptedDocumentException:无法处理加密的Word文件

看来键没有正确设置。

Answer 1:

由于覆盖在图中的Apache POI加密页面 ,你在你的问题链接:

HWPF,它处理Word中的Apache POI组件.doc文件,不支持解密密码保护.doc文件。 因此,如果你试图(为你),你会得到一个异常

如表中解释说,所有的基于OOXML的格式在其加密/密码保护形式的支持,因为这些都使用存储受保护内容的一种常见方式。 旧文件格式,每个人都有自己的做事方式,这需要每个格式独立的实现。 有对用于最常见的一种支持xls在HSSF,在使用该种一个ppt中HSLF,但没有doc中HWPF支持。

如果这真的对你很重要,你需要通过微软发布的文件格式的文档阅读摸出.doc文件怎么办加密,然后加在支持和促进了回去。 对于链接在可用的Apache POI -贡献指南页面



文章来源: Apache POI decrypt doc file cannot process encrypted file?