2016-09-19 4 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