[java] Jasypt를 사용한 자바 애플리케이션의 암호화된 파일 저장 및 복구 방법

Jasypt는 자바 애플리케이션에서 간편하게 암호화와 복호화를 수행할 수 있는 라이브러리입니다. 이번 글에서는 Jasypt를 사용하여 암호화된 파일을 저장하고 복구하는 방법에 대해 알아보겠습니다.

1. Jasypt 의존성 추가

Jasypt를 사용하기 위해서는 먼저 Maven 또는 Gradle 등의 빌드 도구를 사용하여 Jasypt의 의존성을 추가해야 합니다.

Maven의 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependency>
    <groupId>org.jasypt</groupId>
    <artifactId>jasypt</artifactId>
    <version>1.9.3</version>
</dependency>

Gradle의 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다.

dependencies {
    implementation 'org.jasypt:jasypt:1.9.3'
}

의존성을 추가한 후에는 빌드 도구를 통해 Jasypt를 프로젝트에 가져오세요.

2. 암호화된 파일 저장하기

암호화된 파일을 저장하기 위해서는 Jasypt를 사용하여 텍스트를 암호화하는 작업이 필요합니다. 아래는 암호화된 파일을 저장하는 예제 코드입니다.

import org.jasypt.util.text.BasicTextEncryptor;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class FileEncryptor {
    public void saveEncryptedFile(String filePath, String content, String password) {
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword(password);
        String encryptedContent = encryptor.encrypt(content);

        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
            writer.write(encryptedContent);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서는 BasicTextEncryptor 클래스를 사용하여 텍스트를 암호화하고, BufferedWriter를 사용하여 암호화된 내용을 파일에 저장합니다. 저장할 파일의 경로는 filePath로 전달하고, 암호화할 텍스트 내용은 content로 전달합니다. 암호화에 사용할 비밀번호는 password로 전달합니다.

3. 암호화된 파일 복구하기

암호화된 파일을 복구하기 위해서는 저장할 때와 반대로 Jasypt를 사용하여 암호화된 내용을 복호화하는 작업이 필요합니다. 아래는 암호화된 파일을 복구하는 예제 코드입니다.

import org.jasypt.util.text.BasicTextEncryptor;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileDecryptor {
    public String getDecryptedFile(String filePath, String password) {
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword(password);
        StringBuilder decryptedContent = new StringBuilder();

        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = reader.readLine()) != null) {
                decryptedContent.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return encryptor.decrypt(decryptedContent.toString());
    }
}

위의 예제 코드에서는 BasicTextEncryptor 클래스를 사용하여 파일에서 암호화된 내용을 읽어오고, StringBuilder를 사용하여 읽어온 내용을 복호화합니다. 복호화할 파일의 경로는 filePath로 전달하고, 복호화에 사용할 비밀번호는 password로 전달합니다.

4. 결과 확인

위의 예제 코드를 사용하여 암호화된 파일을 저장하고 복구하는 방법을 적용할 수 있습니다. 저장된 파일을 읽어와서 복호화한 후에는 원하는 작업에 활용할 수 있습니다.

public class Main {
    public static void main(String[] args) {
        FileEncryptor encryptor = new FileEncryptor();
        FileDecryptor decryptor = new FileDecryptor();
        String filePath = "encrypted.txt";
        String originalContent = "This is a secret message.";
        String password = "my-password";

        // 암호화된 파일 저장
        encryptor.saveEncryptedFile(filePath, originalContent, password);

        // 암호화된 파일 복구
        String decryptedContent = decryptor.getDecryptedFile(filePath, password);

        System.out.println("Original content: " + originalContent);
        System.out.println("Decrypted content: " + decryptedContent);
    }
}

위의 Main 클래스에서는 FileEncryptorFileDecryptor를 인스턴스화하여 각각의 기능을 사용합니다. filePath, originalContent, password는 예제 코드에서 사용하는 임의의 값입니다. 이를 원하는 값으로 변경하여 테스트해보세요.

암호화된 파일을 저장하고 복구하는 방법에 대해서 알아보았습니다. Jasypt를 사용하면 간편하게 암호화된 파일을 저장하고 복구할 수 있습니다. 자세한 내용은 Jasypt 공식 사이트를 참고하세요.