Base64 인코딩이란?

한 줄 요약: 8비트 이진 데이터(이미지, 영상, 실행 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 문자들로 바꾸는 인코딩 방식입니다.

쉽게 말해, 컴퓨터가 사용하는 이진(Binary) 데이터를 사람이 읽을 수 있는 텍스트(Text) 형태로 잠시 변환하는 규칙

1. 왜 사용할까요? (The ‘Why’)

컴퓨터 시스템 중에는 텍스트 데이터만 안전하게 처리할 수 있도록 설계된 환경이 많습니다. (예: 이메일 전송 프로토콜, HTML/CSS 문서 등)

이런 환경에 이미지나 영상 같은 이진 데이터를 직접 넣으면, 데이터의 특정 바이트(Byte) 값이 시스템이 사용하는 제어 문자(예: 줄바꿈, Null 등)와 충돌하여 데이터가 깨지거나 왜곡될 수 있습니다.

Base64는 이러한 문제를 해결하기 위해, 어떤 시스템에서든 안전하게 전송될 수 있는 64개의 ‘안전한’ 출력 문자들로 데이터를 변환하는 것입니다.

이 64개의 문자는 알파벳 대소문자(A-Z, a-z), 숫자(0-9), 그리고 ’+‘와 ’/’ 기호로 이루어져 있습니다.

2. 어떻게 동작하나요? (The ‘How’)

Base64는 이진 데이터를 6비트(bit) 단위로 잘라서 처리합니다.

예시: “Man”이라는 텍스트를 Base64로 인코딩하는 과정

  1. 원본 데이터를 아스키 코드로 변환

    • M → 77
    • a → 97
    • n → 110
  2. 아스키 코드를 8비트 이진수로 변환

    • 7701001101
    • 9701100001
    • 11001101110
  3. 모든 비트를 하나로 이어붙임 (총 24비트)

    • 010011010110000101101110
  4. 6비트 단위로 자름

    • 010011 010110 000101 101110
  5. 6비트 덩어리를 10진수로 변환

    • 010011 → 19
    • 010110 → 22
    • 000101 → 5
    • 101110 → 46
  6. 10진수 값을 Base64 색인표에서 찾아 문자로 치환

    • 19 → T
    • 22 → W
    • 5 → F
    • 46 → u

결과: “Man” → “TWFu”

패딩(Padding)이란? 원본 데이터가 3바이트(24비트)의 배수가 아닐 경우, 남는 공간을 채우기 위해 = 문자를 사용합니다. 데이터가 부족해서 6비트 덩어리를 만들 수 없을 때, 모자란 부분은 0으로 채우고 결과 문자열의 끝에 = 또는 ==를 붙여 원래 데이터의 길이를 유추할 수 있게 합니다.


3. 주요 사용처 (Use Cases)

  1. 이메일(MIME 인코딩)

    • 이메일에 첨부된 이미지나 파일은 Base64로 인코딩되어 텍스트 메일 본문에 포함된 채로 전송됩니다.
  2. HTML/CSS에서 이미지나 폰트 포함 (Data URI Scheme)

    • 작은 이미지를 서버에 요청하지 않고 HTML이나 CSS 코드에 직접 포함시킬 때 사용합니다.
    • <img src="data:image/png;base64,iVBORw0KGgo..."> 와 같은 형태입니다.
  3. 웹 토큰 (JSON Web Token, JWT)

    • JWT의 헤더(Header)와 페이로드(Payload)는 Base64 URL Safe 방식으로 인코딩됩니다.
  4. 인증 정보 전달

    • HTTP 기본 인증(Basic Authentication)에서 username:password 문자열을 Base64로 인코딩하여 서버에 전송합니다.

4. 핵심 특징 및 주의사항

  • 크기 증가: Base64로 인코딩하면 원본 데이터보다 크기가 약 33% 커집니다. (3바이트가 4개의 문자로 변환되기 때문)
  • 암호화가 아님: Base64는 데이터를 숨기기 위한 암호화(Encryption)가 아닙니다. 정해진 규칙에 따라 변환하는 **인코딩(Encoding)**일 뿐이므로, 누구나 원래 데이터로 쉽게 되돌릴(디코딩) 수 있습니다. 따라서 보안 목적으로 사용해서는 안 됩니다.
  • 가독성: 이진 데이터를 사람이 읽을 수 있는 텍스트 형태로 보여준다는 장점이 있습니다.

결론적으로 Base64는 이진 데이터를 텍스트 기반 시스템에서 안전하게 전송하고 처리하기 위한 필수적인 변환 도구라고 할 수 있습니다.