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 2024.04.03 * 암복호화 */ @Component public class Secret { private static final Charset UTF_8 = StandardCharsets.UTF_8; private static String SECRET_KEY; private static String VECTOR_KEY; public Secret(@Value("${crypto.secret}")String secret, @Value("${crypto.vector}")String vector) { this.SECRET_KEY = secret; this.VECTOR_KEY = vector; } /** * @author takensoft * @since 2024.04.03 * 암호화 */ 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); } /** * @author takensoft * @since 2024.04.03 * 복호화 */ 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); } }