KISA SEED는 한국정보보호진흥원(KISA)에서 개발한 블록 암호 알고리즘으로, 국내에서 널리 사용되는 암호화 방식 중 하나입니다. SEED 알고리즘은 여러 운영 모드를 지원하는데, 그중 ECB(Electronic Codebook) 모드는 블록 단위로 독립적으로 암호화하는 방식입니다.
SEED ECB 모드를 사용하여 데이터를 암·복호화하면 byte[] 형태의 결과값을 얻게 되는데, 이를 문자열(String)로 변환하여 저장하거나 전송하는 방법이 필요할 수 있습니다. 이 글에서는 SEED ECB 암·복호화 후 Base64 변환을 이용한 문자열 저장 방식을 설명합니다.
1. SEED ECB 암복호화 개요
SEED ECB 암·복호화 과정은 다음과 같은 순서로 진행됩니다.
- 암호화: 평문(String) → byte[] 변환 → SEED ECB 암호화 → byte[] 결과
- 문자열 변환: 암호화된 byte[] → Base64 또는 Hex 인코딩 → 문자열(String) 저장 가능
- 복호화: 저장된 문자열을 다시 byte[]로 변환(Base64 디코딩) 후 복호화 → 원본 문자열 복원
이를 코드로 구현하면 SEED ECB 암·복호화를 쉽게 사용할 수 있습니다.
2. SEED ECB 암복호화 예제 코드
아래 Java 코드에서는 SEED/ECB/PKCS5Padding 방식을 사용하며, Base64 인코딩을 통해 암호화된 데이터를 문자열로 변환하는 방법을 보여줍니다.
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class SeedEcbExample {
private static final String ALGORITHM = "SEED/ECB/PKCS5Padding";
private static final String SECRET_KEY = "0123456789abcdef"; // 16바이트 키
public static String encrypt(String plainText) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKeySpec keySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "SEED");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(encryptedBytes); // Base64 변환
}
public static String decrypt(String encryptedText) throws Exception {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKeySpec keySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "SEED");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decodedBytes = Base64.getDecoder().decode(encryptedText); // Base64 디코딩
byte[] decryptedBytes = cipher.doFinal(decodedBytes);
return new String(decryptedBytes, "UTF-8"); // 원본 문자열 변환
}
public static void main(String[] args) throws Exception {
String originalText = "Hello, SEED!";
System.out.println("원본 문자열: " + originalText);
String encryptedText = encrypt(originalText);
System.out.println("암호화된 문자열: " + encryptedText);
String decryptedText = decrypt(encryptedText);
System.out.println("복호화된 문자열: " + decryptedText);
}
}
3. 실행 결과
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
원본 문자열: Hello, SEED!
암호화된 문자열: hF+FZtPQgSozj7bC6L/jQA==
복호화된 문자열: Hello, SEED!
암호화된 문자열이 Base64 형태로 변환되어 저장 가능하며, 이를 다시 복호화하면 원본 문자열로 정확하게 복원됩니다.
4. 정리 및 응용
- SEED ECB는 기본적으로 byte[] 결과를 반환하지만, Base64 변환을 통해 문자열로 저장 가능
- Base64를 사용하면 더 짧고, 안전한 문자열 저장이 가능
- Hex 변환도 가능하지만 Base64보다 길이가 길어질 수 있음
- SEED 알고리즘을 활용하여 안전한 데이터 암호화 및 복호화를 구현 가능
SEED ECB를 사용하여 보안이 필요한 데이터를 안전하게 보호하세요! 추가적인 질문이 있다면 언제든지 댓글로 남겨주세요.