반응형
미루고 미뤄왔던 자바로 MS 워드(word) 암호화하는 코드 포스팅을 해보겠다.
전반적인 로직과 내용은 이전 포스팅과 비슷하니
간략하게 코드만 남길 예정 !
(자세한 내용은 이전 PPT, 엑셀 암호화 포스팅 참고하면 될 듯 )
2024.09.07 - [공부/JAVA | JSP&Servlet | Spring] - [JAVA] PPT 암호화 , PPTX 암호화 (org.apache.poi)
2024.09.18 - [공부/JAVA | JSP&Servlet | Spring] - [JAVA] 엑셀 암호화, xls 암호화, xlsx 암호화 (org.apache.poi)
✅ pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>TEST2</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.23.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.1.2</version>
</dependency>
<!-- .pdf 파일 암호화 -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.22</version>
</dependency>
</dependencies>
</project>
✅ 워드 암호화 (doc 암호화, docx 암호화) 코드
package org.example;
import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.poifs.crypt.EncryptionInfo;
import org.apache.poi.poifs.crypt.EncryptionMode;
import org.apache.poi.poifs.crypt.Encryptor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.*;
public class DocEnct {
public static void main(String[] args) throws Exception {
String inputFilePath = "C:/test/워드파일sample.docx"; // 암호화할 PPTX 파일 경로
String outputFilePath = "C:/test/워드파일sample_enc.docx"; // 암호화된 파일 저장 경로
String password = "1234"; // 암호
try {
if (inputFilePath.endsWith(".docx")) {
// .docx 파일 열기
FileInputStream fis = new FileInputStream(inputFilePath);
XWPFDocument document = new XWPFDocument(fis);
fis.close();
// 암호화 설정
POIFSFileSystem fs = new POIFSFileSystem();
EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);
Encryptor enc = info.getEncryptor();
enc.confirmPassword(password);
// 암호화된 파일을 작성할 OutputStream 생성
OutputStream os = enc.getDataStream(fs);
document.write(os);
os.close();
try (FileOutputStream fos = new FileOutputStream(outputFilePath)) {
fs.writeFilesystem(fos);
}
document.close();
}else if(inputFilePath.endsWith(".doc")){
//try-with-resources 구문
try(POIFSFileSystem fs = new POIFSFileSystem(new File(inputFilePath), true);
FileOutputStream os = new FileOutputStream(outputFilePath))
{
Biff8EncryptionKey.setCurrentUserPassword(password);
HWPFDocument doc = new HWPFDocument(fs);
doc.write(os);
doc.close();
System.out.println("doc 암호화가 완료되었습니다.");
}catch (IOException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
- inputFilePath 변수 : 암호화 할 워드 파일 경로 (*파일 이름 적을 때, 확장자 까지 붙여줄것)
- outputFilePath 변수 : 워드 암호화 작업 후 파일을 저장할 경로 (*파일 이름 적을 때, 확장자 까지 붙여줄것)
- password 변수 : 워드 파일에 걸 암호
반응형
'공부 > JAVA | JSP&Servlet | Spring' 카테고리의 다른 글
[JAVA] PDF 암호화 (org.apache.pdfbox) (1) | 2024.11.20 |
---|---|
[JAVA] 엑셀 암호화, xls 암호화, xlsx 암호화 (org.apache.poi) (2) | 2024.09.18 |
[JAVA] PPT 암호화 , PPTX 암호화 (org.apache.poi) (1) | 2024.09.07 |
[JAVA 에러] nested excption is java.lang.NoSuchMethodError: xxx.xxx.xxx.xxxx.access$0 에러 해결 (ft. 클래스$0, $1 파일들..) (0) | 2024.05.19 |
[JAVA] JDK 설치 및 환경변수 설정하는 방법 완벽정리! (0) | 2019.09.03 |