
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.takensoft.common.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Base64.Encoder;
import java.util.Base64.Decoder;
/**
* @author : takensoft
* @since : 2025.01.22
* @modification
* since | author | description
* 2025.01.22 | takensoft | 최초 등록
*
* 암호화 및 복호화 작업을 수행하는 유틸리티
*/
@Component
public class Secret {
private static final Charset UTF_8 = StandardCharsets.UTF_8; // UTF-8 문자셋
private static String SECRET_KEY; // 암호화 키
private static String VECTOR_KEY; // 복호화 키
/**
* @param secret - 암호화 키 (application.yml에서 값을 읽어 옴)
* @param vector - 복호화 키 (application.yml에서 값을 읽어 옴)
*
* 기본 생성자
*/
public Secret(@Value("${crypto.secret}")String secret, @Value("${crypto.vector}")String vector) {
this.SECRET_KEY = secret;
this.VECTOR_KEY = vector;
}
/**
* @param data - 암호화할 데이터
* @return 암호화된 데이터 (Base64로 인코딩된 문자열)
*
* 암호화
*/
public static String encrypt(String data) {
Encoder encoder = Base64.getEncoder();
byte[] message = data.getBytes(UTF_8);
byte[] encryptedData = KISA_SEED_CBC.SEED_CBC_Encrypt(SECRET_KEY.getBytes(), VECTOR_KEY.getBytes(), message, 0, message.length);
return new String(encoder.encode(encryptedData), UTF_8);
}
/**
* @param encryptedData - 복호화할 암호화된 데이터 (Base64로 인코딩된 문자열)
* @return 복호화된 원본 데이터
*
* 복호화
*/
public static String decrypt(String encryptedData) {
Decoder decoder = Base64.getDecoder();
byte[] message = decoder.decode(encryptedData);
byte[] decryptedData = KISA_SEED_CBC.SEED_CBC_Decrypt(SECRET_KEY.getBytes(), VECTOR_KEY.getBytes(), message, 0, message.length);
return new String(decryptedData, UTF_8);
}
}