当前位置: 首页 > 知识库问答 >
问题:

在java中使用Apache POI使用密码保护文档

颛孙沈义
2023-03-14
    POIFSFileSystem fs=new POIFSFileSystem();
    EncryptionInfo info=new EncryptionInfo(EncryptionMode.agile);
    Encryptor enc=info.getEncryptor();
    enc.confirmPassword("user");
    OPCPackage opc=OPCPackage.open("D:/Amar.doc", PackageAccess.READ_WRITE);
    OutputStream os=enc.getDataStream(fs);
    opc.save(os);
    opc.close();
    FileOutputStream stream=new FileOutputStream("D:/ao.doc");
    fs.writeFilesystem(stream);
    stream.close();
    System.out.println("running");

共有1个答案

颜功
2023-03-14

我查看并参考了Apache POI文档,它说.doc文件的密码加密从3.17版本开始就支持了,所以我试了一下。

它必须使用hwpfdocument来打开文档文件。则需要通过以下方式设置密码:

Biff8EncryptionKey.setCurrentUserPassword(password);

完成方法

public static void encryptDocFile(File inputDocFile, File outputDocFile, String password) {
    try {
        FileInputStream fileInput = new FileInputStream(inputDocFile);
        BufferedInputStream bufferInput = new BufferedInputStream(fileInput);
        POIFSFileSystem poiFileSystem = new POIFSFileSystem(bufferInput);
        // Setting password
        Biff8EncryptionKey.setCurrentUserPassword(password);

        HWPFDocument wordDoc = new HWPFDocument(poiFileSystem);
        FileOutputStream fileOut = new FileOutputStream(outputDocFile);
        wordDoc.write(fileOut);
        bufferInput.close();
        fileOut.close();
        wordDoc.close();
        System.out.println("Encrypted successfully");
    } catch (IOException e) {
        System.out.println("Failed to encrypt doc file");
        e.printStackTrace();
    }
}
 类似资料:
  • 到目前为止,我一直在创建一个文件(txt/excel),使用buffered Writer创建文本文件,使用JExcel API创建excel文件。这些文件是我只用Java创建的。 现在我想让文件密码在这两种情况下都受到保护,比如,文件可以被很多人访问,但只有选中的人可以使用自己的登录ID/密码访问它。 有可能吗?。。 谢谢

  • OAuth 2.0 资源所有者密码授权 允许一个客户端发送用户名和密码到令牌服务并获得一个表示该用户访问令牌。 (OAuth 2.0) 规范 建议仅对“受信任”的应用程序使用资源所有者密码授权。一般来说,当你想要验证一个用户并请求访问令牌的时候,使用交互式 OpenID Connect 流通常会更好。 不过,这个授权类型允许我们在 IdentityServer 快速入门中引入 用户 的概念,这是我

  • 我需要解压缩一个受密码保护的zip文件。 到目前为止,我得到了互联网的帮助,我试图理解代码。 但它抛出nullpointerexception。我真的很困惑。是“孩子”还是别的什么。请解释一下。 线程“main”java中出现异常。unzip2处的lang.NullPointerException。Unzip2。main(Unzip2.java:27)C:\Users\zxc\AppData\Lo

  • 问题内容: 我已经使用Java创建了zip文件,如下所示 现在,我想在单击zip文件时提示我输入密码,然后解压缩zip文件。请任何帮助,我应该怎么走? 问题答案: 尝试以下基于以下代码Zip4j: 来自。 用法示例:

  • 问题内容: 我想使pdf文件受密码保护。我只是对它进行了搜索,并在下面找到了一个好的解决方案。它工作正常,但是使用下面给定的代码保护pdf后,它会清除pdf中已经存在的所有数据。 此代码使用的jar文件是: itextpdf-5.2.1.jar bcmail-jdk16-1.46.jar bcprov-jdk16-1.46.jar bctsp-jdk16-1.46.jar 保护PDF的代码: 我需