1

我想在我的 word 文件 (.doc) 中添加密码。我在谷歌搜索它,但只找到(.docx)的解决方案。谁能帮我?我正在使用此代码,但输出文件没有密码。

FileInputStream in = new FileInputStream("Doccc.doc");    

BufferedInputStream bin = new BufferedInputStream(in);            
POIFSFileSystem poiFileSystem = new POIFSFileSystem(bin);

Biff8EncryptionKey.setCurrentUserPassword("P@ssw0rd");
HWPFDocument doc = new HWPFDocument(poiFileSystem);            
Range range = doc.getRange();

FileOutputStream out = new FileOutputStream("Doccc.doc");
doc.write(out);
out.close();
4

1 回答 1

1

正如 Gagravarr 所指出的,支持的加密/密码保护矩阵的页面几乎总结了它。使用标准库,您将无法设置密码。

如果在 Word 文件格式的二进制格式规范中描述了详细信息,您可以选择实现它。几年前,我为客户构建了一个自定义的 HWPF 库,因此我花了很多时间分析文件格式和阅读规范。但是,我不记得有关加密/保护的部分,可能是因为它们与我无关。

如果可以通过合理的工作量添加保护: .doc文件以 OLE2 复合文档格式存储。此格式包含实际的 Word 相关数据。(如果您是新手,您可能会认为它是一种存档格式 - 可能就像没有压缩的 ZIP 文件。) OLE2 部分得到很好的支持(模块POIFS)。二进制 Word 文件格式(模块HWPF)没有得到很好的支持。如果您将 Word 文件读入 aHWPFDocument并再次写出,您很可能会得到一个无效的文档。

因此,如果可以添加保护而无需读取和写入HWPFDocument,您就有机会了。如果需要修改 Word 数据部分,并且它只是很小,可能会更改几个字节(不插入或删除)而不读取和写入HWPFDocument,那么您也有机会。但是,如果实施保护需要更改大量 Word 文件格式结构,您可能无法在几个月内完成项目的这一部分(如果您是一个人的团队,可能需要几年时间 :-))。

于 2016-09-20T07:01:34.967 回答