KISA SEED ECB 암복호화 및 문자열 변환 방법

KISA SEED는 한국정보보호진흥원(KISA)에서 개발한 블록 암호 알고리즘으로, 국내에서 널리 사용되는 암호화 방식 중 하나입니다. SEED 알고리즘은 여러 운영 모드를 지원하는데, 그중 ECB(Electronic Codebook) 모드는 블록 단위로 독립적으로 암호화하는 방식입니다.

SEED ECB 모드를 사용하여 데이터를 암·복호화하면 byte[] 형태의 결과값을 얻게 되는데, 이를 문자열(String)로 변환하여 저장하거나 전송하는 방법이 필요할 수 있습니다. 이 글에서는 SEED ECB 암·복호화 후 Base64 변환을 이용한 문자열 저장 방식을 설명합니다.


1. SEED ECB 암복호화 개요

SEED ECB 암·복호화 과정은 다음과 같은 순서로 진행됩니다.

  1. 암호화: 평문(String) → byte[] 변환 → SEED ECB 암호화 → byte[] 결과
  2. 문자열 변환: 암호화된 byte[] → Base64 또는 Hex 인코딩 → 문자열(String) 저장 가능
  3. 복호화: 저장된 문자열을 다시 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를 사용하여 보안이 필요한 데이터를 안전하게 보호하세요! 추가적인 질문이 있다면 언제든지 댓글로 남겨주세요. 😊

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다