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

Jasypt는 자바 애플리케이션에서 데이터를 암호화하고 복호화하기위한 강력한 라이브러리입니다. 이 라이브러리를 사용하여 파일을 암호화하고 복호화하는 방법에 대해 알아보겠습니다.

1. 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'
}

2. 파일 암호화

다음으로, 파일을 암호화하는 방법에 대해 알아보겠습니다. 다음 코드는 Jasypt를 사용하여 파일을 AES 대칭키 암호화로 암호화하는 예제입니다:

import org.jasypt.util.text.BasicTextEncryptor;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class FileEncryptionExample {

    public static void main(String[] args) throws IOException {
        String password = "mypassword";
        String inputFile = "path/to/input/file";
        String outputFile = "path/to/output/file";

        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword(password);

        File input = new File(inputFile);
        File output = new File(outputFile);

        try (FileInputStream inputStream = new FileInputStream(input);
             OutputStream outputStream = new FileOutputStream(output)) {
            byte[] buffer = new byte[(int) input.length()];
            inputStream.read(buffer);

            String encryptedContent = encryptor.encrypt(new String(buffer));
            outputStream.write(encryptedContent.getBytes());
        }
    }
}

위 예제에서 password 변수에는 암호화에 사용할 비밀번호를 입력해야합니다. inputFile은 암호화 할 원본 파일의 경로이고, outputFile은 암호화 된 결과 파일의 경로입니다.

3. 파일 복호화

이제 암호화된 파일을 복호화하는 방법에 대해 알아보겠습니다. Jasypt는 동일한 비밀번호를 사용하여 파일을 복호화할 수 있습니다. 다음은 파일을 복호화하는 예제 코드입니다:

import org.jasypt.util.text.BasicTextEncryptor;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;

public class FileDecryptionExample {

    public static void main(String[] args) throws IOException {
        String password = "mypassword";
        String inputFile = "path/to/input/file";
        String outputFile = "path/to/output/file";

        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword(password);

        File input = new File(inputFile);
        File output = new File(outputFile);

        try (FileInputStream inputStream = new FileInputStream(input);
             OutputStream outputStream = new FileOutputStream(output)) {
            byte[] buffer = new byte[(int) input.length()];
            inputStream.read(buffer);

            String decryptedContent = encryptor.decrypt(new String(buffer));
            outputStream.write(decryptedContent.getBytes());
        }
    }
}

암호화된 파일을 복호화하려면 마찬가지로 password, inputFileoutputFile 변수를 설정해야합니다.

결론

Jasypt를 사용하여 자바 애플리케이션에서 파일을 암호화하고 복호화하는 방법을 살펴 보았습니다. 암호화된 파일을 안전하게 저장하고 전송하는 데 사용할 수 있습니다. 또한 Jasypt는 다양한 암호화 알고리즘과 방식을 지원하므로 보안 요구 사항에 맞게 설정할 수 있습니다.

더 많은 자세한 내용은 Jasypt 공식 문서를 참조하세요.