AES 암호화/복호화 테스트하기 (ECB/CBC/CTR, 다양한 옵션 지원)

AES(Advanced Encryption Standard)는 대칭키 방식으로 가장 널리 쓰이는 블록 암호입니다.
아래 폼을 이용해서 브라우저에서 바로 AES 암호화/복호화를 테스트해 볼 수 있습니다.


1. 사용 방법

  1. 동작 선택
  • Encrypt: 평문(Plain Text)을 암호문으로 변환
  • Decrypt: 암호문을 평문으로 복원
  1. Cipher Mode 선택 (ECB / CBC / CTR)
  • ECB
    • 가장 단순한 모드, IV(Initialization Vector)를 사용하지 않습니다.
    • 동일한 블록이 항상 동일한 암호문이 되기 때문에 보안상 권장되지는 않습니다.
  • CBC
    • 가장 많이 쓰이는 블록 모드 중 하나입니다.
    • 16바이트(128bit) 길이의 IV가 필요하며, 같은 평문이라도 IV에 따라 다른 암호문이 나옵니다.
  • CTR
    • 블록 암호를 스트림처럼 사용하는 모드입니다.
    • 병렬 처리가 가능하고, IV(논스)를 적절히 관리하면 안전하게 사용할 수 있습니다.
  1. Padding 방식 선택
  • PKCS5Padding
    • 블록 크기(16바이트)에 맞추기 위해 부족한 부분을 패딩 바이트로 채우는 일반적인 방식입니다.
  • NoPadding
    • 패딩을 하지 않습니다.
    • 이 모드를 사용할 때는 입력 데이터 길이가 반드시 16바이트의 배수가 되어야 하며, 그렇지 않으면 오류가 발생할 수 있습니다.
  1. Key Size 선택 (128 / 192 / 256 bit)
  • AES는 128bit 블록 크기를 사용하며, 키 길이는 128/192/256bit를 지원합니다.
  • 이 예제에서는 문자열 키를 입력하면 내부적으로
    • 지정한 길이(16/24/32바이트)를 기준으로 잘라서 사용하거나
    • 부족할 경우 0x00 으로 채워서 사용합니다.
  1. IV(Initialization Vector)
  • ECB 모드에서는 사용되지 않습니다.
  • CBC / CTR 모드에서는 16바이트 길이의 IV 사용을 권장합니다.
  • 이 예제에서는 IV 입력이 비어 있는 경우, 0으로 채워진 IV를 사용합니다.
  • 실제 서비스에서는 IV를 랜덤하게 생성하고, 필요하다면 암호문과 함께 저장/전달하는 패턴을 많이 사용합니다.
  1. 암호문 포맷 선택 (Base64 / Hex)
  • Base64: 텍스트로 다루기 쉬워서 많이 사용되는 인코딩 방식입니다.
  • Hex: 바이너리 데이터를 16진수 문자열로 표현합니다.
  • 이 예제에서는
    • 암호화 시: 선택한 포맷으로 결과를 출력하고
    • 복호화 시: 입력 암호문이 해당 포맷(Base64 또는 Hex)이라고 가정하고 디코딩합니다.

2. AES 테스트 폼

아래 폼에 값을 입력한 뒤, Encrypt / Decrypt를 선택하고 “실행하기” 버튼을 눌러 결과를 확인해 보세요.

AES Encryption / Decryption Tool


 






Key is automatically trimmed or padded to match the selected key size.


Used for CBC and CTR modes. If empty, a zero-filled IV will be used.


Enter plain text for encryption, or ciphertext for decryption.


3. 다른 언어와 결과 맞춰보기

이 글에서 사용하는 AES 설정은 다음과 같습니다.

  • 알고리즘: AES
  • Key Size: 128 / 192 / 256 bit
  • 모드: ECB / CBC / CTR (PHP OpenSSL 기준)
  • 패딩: PKCS5Padding 또는 NoPadding
  • 암호문 포맷: Base64 또는 Hex

Python, Java, Node.js 등에서 동일한 모드/키/IV/패딩을 맞추면
서로 호환되는 암호화/복호화 결과를 얻을 수 있습니다.

실제로 테스트할 때는 다음을 반드시 통일해야 합니다.

  1. Key Size (128/192/256bit)
  2. Cipher Mode (예: AES/CBC/PKCS5Padding)
  3. IV 값
  4. 입력/출력 포맷 (Base64 or Hex)
Table of Contents