2016-09-19 6 views
1

Я хочу добавить пароль в файл слова (.doc). Я искал его в google, но нашел только решение для (.docx). Может кто-нибудь мне помочь? Я использую этот код, но выходной файл не имеет пароля.Добавить файл с расширением .doc с паролем apache poi

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

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

Biff8EncryptionKey.setCurrentUserPassword("[email protected]"); 
HWPFDocument doc = new HWPFDocument(poiFileSystem);    
Range range = doc.getRange(); 

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

Вы посмотрели [основанную на Apache POI матрицу защиты/защиты паролем] (http://poi.apache.org/encryption.html)? – Gagravarr

+0

@Gagravarr да. в этом руководстве не поддерживается файл .doc, он поддерживает только файл .docx. может ли кто-нибудь предложить по-другому? – kids

ответ

1

Как указал Гагравар, страница для поддерживаемой матрицы шифрования/защиты пароля в значительной степени суммирует ее. В стандартной библиотеке вы не сможете установить пароль.

Возможно, у вас есть возможность реализовать его, если подробности описаны в спецификации двоичных форматов для формата файла Word. Несколько лет назад я создал пользовательскую библиотеку HWPF для клиента, поэтому я потратил много времени на анализ формата файла и чтение спецификаций. Тем не менее, я не помню разделы о шифровании/защите, возможно, потому, что они не имели отношения ко мне.

Если есть возможность добавить защиту с разумным объемом работы: .doc файлы хранятся в формате документа OLE2. Этот формат содержит фактические данные, относящиеся к Word. (Если вы новичок в этом, вы можете подумать об этом как формате архиватора - возможно, как ZIP-файл без сжатия.) Часть OLE2 хорошо поддерживается (модуль POIFS). Бинарный формат файла Word (модуль HWPF) не очень хорошо поддерживается. Если вы прочитали файл Word в HWPFDocument и снова напишите это, скорее всего, вы получите недопустимый документ.

Так что, если можно добавить защиту без необходимости читать и записывать HWPFDocument, у вас есть шанс. Если требуется модификация части данных Word, и она мала, возможно, изменив пару байтов (не вставляя или удаляя) без чтения и записи HWPFDocument, тогда у вас также есть шанс. Но если для реализации защиты требуются изменения во многих структурах формата Word, вы, вероятно, не закончите эту часть проекта в течение нескольких месяцев (может быть, лет, если вы единоличная команда :-)).

+0

Я всегда проделал долгий путь вокруг HWPF, но реализация шифрования [# 61162] (https://bz.apache.org/bugzilla/show_bug.cgi?id=61162) была более или менее прямой и основной материал работал в течение нескольких часов :) – kiwiwings