[java] OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 암호화하는 방법은?
먼저 OpenCSV 라이브러리를 Java 프로젝트에 추가해야 합니다. Maven을 사용하신다면 pom.xml
파일에 다음 의존성을 추가하세요:
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.3</version>
</dependency>
그런 다음, 아래의 예제 코드를 참고하여 CSV 파일의 데이터를 암호화해보세요:
import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class CSVEncryptionExample {
public static void main(String[] args) {
String csvFilePath = "path/to/input.csv";
String encryptedCsvFilePath = "path/to/encrypted.csv";
try {
// CSV 파일 읽기
CSVReader csvReader = new CSVReader(new FileReader(csvFilePath));
String[] nextLine;
// CSV 파일 쓰기
CSVWriter csvWriter = new CSVWriter(new FileWriter(encryptedCsvFilePath));
while ((nextLine = csvReader.readNext()) != null) {
// 각 필드 데이터 암호화
String[] encryptedLine = encryptData(nextLine);
// 암호화된 데이터를 CSV 파일로 쓰기
csvWriter.writeNext(encryptedLine);
}
// 리소스 정리
csvReader.close();
csvWriter.close();
System.out.println("CSV 파일 암호화 완료!");
} catch (IOException e) {
e.printStackTrace();
}
}
private static String[] encryptData(String[] data) {
String[] encryptedData = new String[data.length];
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
for (int i = 0; i < data.length; i++) {
// 데이터 암호화
byte[] encryptedBytes = md.digest(data[i].getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : encryptedBytes) {
sb.append(String.format("%02x", b));
}
encryptedData[i] = sb.toString();
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encryptedData;
}
}
위의 예제 코드에서는 SHA-256 해시 알고리즘을 사용하여 각 필드 데이터를 암호화했습니다. SHA-256
알고리즘 대신 다른 암호화 알고리즘을 사용하고 싶다면 MessageDigest.getInstance("해시_알고리즘")
에서 암호화 알고리즘을 변경하면 됩니다.
위 코드는 입력 CSV 파일을 읽어서 데이터를 암호화한 후, 암호화된 데이터를 새로운 CSV 파일로 저장합니다. 암호화된 데이터는 기존 데이터와 동일한 필드 위치에 저장되며, 암호화된 CSV 파일은 encryptedCsvFilePath
변수에 지정한 경로에 생성됩니다.
이 코드를 실행하면 CSV 파일의 데이터가 암호화되어 새로운 파일에 저장되므로, 원래의 CSV 파일에는 암호화된 데이터가 저장되지 않습니다.