2016-09-19 19 views
1

私のワードファイル(.doc)にパスワードを追加します。 Googleで検索しましたが、(.docx)の解決策しか見つかりませんでした。誰でも助けてくれますか?私はこのコードを使用していますが、出力ファイルにはパスワードがありません。パスワードapache poiを持つ単語(.doc)ファイルを追加します

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

Gagravarrが指摘しているように、サポートされている暗号化/パスワード保護マトリックスのページは、かなり多く要約しています。標準ライブラリでは、パスワードを設定することはできません。

詳細が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

関連する問題