[java] OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 암호화하는 방법은?

CSV 파일의 데이터를 임의로 암호화하기 위해서는 OpenCSV 라이브러리를 사용할 수 있습니다. OpenCSV는 CSV 파일을 읽고 쓰기 위한 매우 유용한 도구입니다.

먼저, OpenCSV를 다운로드하고 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>5.5.2</version>
</dependency>

이제 CSV 파일을 암호화하는 코드를 작성해보겠습니다. 예를 들어, CSV 파일에 있는 모든 데이터를 AES 알고리즘을 사용하여 암호화하는 방법을 알아보겠습니다.

import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.io.FileReader;
import java.io.FileWriter;
import java.nio.charset.StandardCharsets;
import java.security.Key;

public class CsvEncryptionExample {
    private static final String SECRET_KEY = "mysecretkey";
    private static final String ALGORITHM = "AES";

    public static void main(String[] args) {
        // CSV 파일 경로
        String csvFilePath = "/path/to/csv/file.csv";

        try {
            // CSV 파일 읽기
            CSVReader csvReader = new CSVReader(new FileReader(csvFilePath));
            String[] line;
            while ((line = csvReader.readNext()) != null) {
                // 데이터 암호화
                String encryptedLine = encryptLine(String.join(",", line));

                // 암호화된 데이터를 CSV 파일에 쓰기
                CSVWriter csvWriter = new CSVWriter(new FileWriter(csvFilePath, true));
                csvWriter.writeNext(new String[]{encryptedLine});
                csvWriter.close();
            }
            csvReader.close();

            System.out.println("CSV 파일의 데이터를 암호화하여 저장했습니다.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 데이터 암호화 메소드
    private static String encryptLine(String line) throws Exception {
        Key secretKey = new SecretKeySpec(SECRET_KEY.getBytes(StandardCharsets.UTF_8), ALGORITHM);
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] encryptedBytes = cipher.doFinal(line.getBytes());

        return new String(encryptedBytes);
    }
}

위의 코드에서는 CsvEncryptionExample 클래스를 생성하고 csvFilePath 변수에 암호화할 CSV 파일의 경로를 설정합니다. encryptLine 메소드에서는 AES 알고리즘을 사용하여 문자열을 암호화합니다.

코드를 실행하면 CSV 파일의 데이터가 암호화되어 저장됩니다. 이제 암호화된 CSV 파일을 읽어들일 때는 동일한 알고리즘과 키를 사용하여 데이터를 복호화할 수 있습니다.

암호화된 데이터를 읽을 때는 CSVReader를 사용하고, 데이터를 복호화할 때는 decryptLine 메소드를 추가하여 복호화하는 작업을 수행하면 됩니다.

참고 자료: