🔐
← 가이드 목록으로

Base64란 무엇인가요? 초보자를 위한 완벽 가이드

· 태그: base64, encoding, binary-to-text, web-development, data-transfer

Base64 인코딩이란?

Base64는 64자 알파벳을 사용하여 이진 데이터를 ASCII 문자열 형식으로 나타내는 이진-텍스트 인코딩 방식입니다. 원래 MIME(Multipurpose Internet Mail Extensions)을 통한 이메일 첨부 파일을 위해 설계되었으며, 웹에서 가장 널리 사용되는 인코딩 방법 중 하나로 남아 있습니다.

이미지, 파일, 압축된 바이트와 같은 이진 데이터를 텍스트용으로 구축된 채널을 통해 전송해야 할 때, Base64가 가장 적합한 솔루션입니다. 임의의 바이트를 가져와 문자, 숫자 및 몇 개의 특수 문자로 구성된 안전하고 이식 가능한 문자열로 변환합니다.

Base64의 작동 방식

Base64는 이진 데이터를 3바이트(24비트) 그룹으로 처리하고 각 그룹을 4개의 Base64 문자로 변환하는 방식으로 작동합니다. "Base64"라는 이름은 인코딩 알파벳이 64개의 서로 다른 문자(A-Z, a-z, 0-9, +, /)를 사용한다는 사실에서 유래했습니다.

인코딩 알고리즘 단계별 설명

  1. 입력 데이터의 3바이트(24비트)를 가져옵니다
  2. 이를 4개의 6비트 그룹으로 분할합니다
  3. 6비트 값(0-63)을 Base64 알파벳 테이블에 매핑합니다
  4. 입력 길이가 3으로 나누어 떨어지지 않으면 패딩(=)을 추가합니다

다음은 구체적인 예제입니다. 문자열 "Man"은 다음과 같이 인코딩됩니다:

  • M (ASCII 77) = 01001101
  • a (ASCII 97) = 01100001
  • n (ASCII 110) = 01101110

결합: 01001101 01100001 01101110 → 6비트 그룹으로 분할:

  • 010011 = 19 → T
  • 010110 = 22 → W
  • 000101 = 5 → F
  • 101110 = 46 → u

따라서 "Man""TWFu"가 됩니다.

패딩이란?

입력 길이가 3바이트의 배수가 아닌 경우, Base64는 출력이 4자의 배수가 되도록 패딩 문자(=)를 추가합니다:

  • 1바이트 입력 → 2개의 Base64 문자 + 2개의 패딩 문자 (==)
  • 2바이트 입력 → 3개의 Base64 문자 + 1개의 패딩 문자 (=)

예를 들어, "M"에 해당하는 단일 바이트는 TQ==로 인코딩됩니다.

Base64 알파벳 테이블

| 값 | 문자 | 값 | 문자 | 값 | 문자 | 값 | 문자 | |-------|------|-------|------|-------|------|-------|------| | 0 | A | 16 | Q | 32 | g | 48 | w | | 1 | B | 17 | R | 33 | h | 49 | x | | 2 | C | 18 | S | 34 | i | 50 | y | | 3 | D | 19 | T | 35 | j | 51 | z | | 4 | E | 20 | U | 36 | k | 52 | 0 | | 5 | F | 21 | V | 37 | l | 53 | 1 | | 6 | G | 22 | W | 38 | m | 54 | 2 | | 7 | H | 23 | X | 39 | n | 55 | 3 | | 8 | I | 24 | Y | 40 | o | 56 | 4 | | 9 | J | 25 | Z | 41 | p | 57 | 5 | | 10 | K | 26 | a | 42 | q | 58 | 6 | | 11 | L | 27 | b | 43 | r | 59 | 7 | | 12 | M | 28 | c | 44 | s | 60 | 8 | | 13 | N | 29 | d | 45 | t | 61 | 9 | | 14 | O | 30 | e | 46 | u | 62 | + | | 15 | P | 31 | f | 47 | v | 63 | / |

Base64 인코딩의 일반적인 사용 사례

이메일 첨부 파일 (MIME)

Base64는 MIME(Multipurpose Internet Mail Extensions)을 위해 만들어졌습니다. SMTP와 같은 이메일 프로토콜은 7비트 ASCII 텍스트용으로 설계되었으므로, PDF, 이미지, ZIP 파일과 같은 이진 첨부 파일은 이메일로 전송되기 전에 Base64로 인코딩되어야 합니다.

HTML 및 CSS의 데이터 URL

Base64를 사용하면 데이터 URL을 통해 이미지, 글꼴 및 기타 미디어를 HTML 또는 CSS 파일에 직접 임베딩할 수 있습니다:

<img src="data:image/png;base64,iVBORw0KGgo..." alt="Embedded Image" />

이렇게 하면 추가 HTTP 요청이 필요 없어져 작은 애셋에 유용할 수 있습니다.

JSON Web Token (JWT)

JWT는 URL 안전 변형인 Base64(Base64url)를 사용하여 각 토큰의 헤더, 페이로드 및 서명을 인코딩합니다. 이것이 인증 시스템에서 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9와 같은 문자열을 보게 되는 이유입니다.

데이터베이스에 이진 데이터 저장

많은 데이터베이스는 텍스트 저장에 최적화되어 있으며 원시 바이트를 제대로 처리하지 못할 수 있습니다. 이진 데이터를 Base64로 인코딩하면 이미지, 직렬화된 객체 또는 암호화된 데이터를 텍스트 열에 저장할 수 있습니다.

API 페이로드

REST 또는 GraphQL API를 통해 이진 데이터를 전송할 때, 특히 JSON 형식에서는 Base64가 표준 선택입니다. JSON은 원시 바이트를 네이티브하게 표현할 수 없기 때문입니다.

Base64는 파일 크기를 증가시키나요?

네. Base64 인코딩은 데이터 크기를 약 33% 증가시킵니다. 3바이트의 입력마다 4바이트의 출력이 생성됩니다. 이 오버헤드는 이진 데이터를 텍스트 전용 채널을 통해 전송 가능하게 만드는 대가입니다.

Base64는 암호화인가요?

아닙니다. 이는 흔한 오해입니다. Base64는 인코딩 방식이지 암호화가 아닙니다. Base64 문자열을 받은 사람은 누구든지 키 없이도 원래 데이터로 디코딩할 수 있습니다. 어떠한 보안이나 기밀성도 제공하지 않습니다. 데이터를 보호해야 한다면 암호화(예: AES)를 사용한 후, 선택적으로 암호화된 바이트를 Base64로 인코딩하여 전송하세요.

Base64 vs 기타 이진-텍스트 인코딩

| 인코딩 | 알파벳 크기 | 오버헤드 | 가장 적합한 용도 | |----------|--------------|----------|----------| | Base64 | 64자 | ~33% | 데이터 전송 및 임베딩 | | Base32 | 32자 | ~60% | 사람이 읽을 수 있고 대소문자 구분이 없는 컨텍스트 | | Base16 (Hex) | 16자 | 100% | 디버깅, 메모리 덤프, 색상 코드 | | Ascii85 | 85자 | ~25% | Adobe PostScript, PDF 스트림 |

Base64는 공간 효율성과 광범위한 호환성 사이의 균형 잡힌 절충안을 제공하여, 웹에서 가장 인기 있는 이진-텍스트 인코딩이 되었습니다.

온라인으로 Base64 인코딩 체험하기

직접 데이터를 인코딩할 준비가 되셨나요? 무료 온라인 Base64 인코더 및 디코더를 사용하여 브라우저에서 텍스트나 파일을 즉시 변환하세요. 설치나 가입이 필요하지 않습니다.