14-5. Base64

박은서's avatar
Feb 26, 2026
14-5. Base64

1. Base64

1️⃣ Base64 란?

1) 개념

데이터를 "텍스트 형태로 안전하게 표현하기 위한 인코딩 방식"
  • 바이너리 데이터(이미지, 파일, 암호키 등)를 ASCII 문자로 변환
  • 이름 의미
    • 사용 가능한 문자 집합이 64개
  • 사용 문자
    • A–Z (26) a–z (26) 09 (10) + /
      64개 문자
      (+ 패딩용 =)

2️⃣ 왜 Base64를 사용할까?

1) 핵심 이유

  • 텍스트만 안전한 환경 때문
    • 인터넷의 많은 시스템은 기본적으로 텍스트 중심
    • 이메일 (SMTP)
    • JSON / XML
    • URL
    • HTTP 헤더
    • 쿠키
    • 이 환경들은 바이너리 데이터 직접 처리 어려움 ❌
      ✅ 텍스트는 안정적
      ➡️ 바이너리 → 텍스트 변환 필요 → Base64

2) 대표 사용 사례

  • 이미지 데이터를 JSON에 포함
  • 이메일 첨부파일
  • JWT 토큰
  • 암호화 키 표현
  • Data URI
    • <imgsrc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."/>

3️⃣ 장단점

1) 장점

  • 안전성
    • 텍스트만 허용되는 환경에서도 사용 가능
    • 깨짐 / 손상 위험 감소
  • 호환성
    • 거의 모든 시스템에서 처리 가능
    • 플랫폼 독립적
  • 단순성
    • 구현이 매우 간단
    • 디코딩도 쉬움

2) 단점

  • 데이터 크기 증가
    • Base64 인코딩 시 약 33% 증가
    • 이유 : 3바이트 → 4문자 변환 구조
      • 원본: 3 bytes (24 bits) Base64: 4 chars (32 bits)
  • 암호화 아님
    • 보안 기술 ❌ 단순 변환 ⭕
      • 누구나 디코딩 가능
  • 처리 비용
    • 인코딩 / 디코딩 CPU 사용
    • 대량 데이터 시 부담

4️⃣ 동작 원리 (실행 흐름)

Base64 핵심 아이디어 : 6비트 단위 변환

Step 1) 데이터를 비트로 변환

예:
문자: "Man" M → 01001101 a → 01100001 n → 01101110
합치면:
010011010110000101101110 (24 bits)

Step 2) 6비트씩 분할

010011 010110 000101 101110

Step 3) 10진수 변환

010011 19 010110 22 000101 5 101110 46

Step 4) Base64 문자 매핑

Base64 테이블 사용:
19 → T 22 → W 5 → F 46 → u
결과:
TWFu

5️⃣ 패딩(=)이 필요한 이유

  • 입력 데이터가 3바이트 단위가 아닐 경우 발생
    • 1바이트 → ==
    • 2바이트 → =
  • 목적 : 길이 맞추기

6️⃣ 핵심 요약 (시험용 / 면접용)

  • Base64 = 인코딩 방식
  • 목적 = 바이너리 → 텍스트 변환
  • 특징
    • 안전성 ↑
    • 크기 ↑ (~33%)
    • 보안 X
    • 6비트 단위 변환

7️⃣ 그림으로 이해하기

notion image
Share article