전체 아티클
개발

Base64 인코딩이란 무엇이고 언제 사용해야 할까

2025년 2월 10일5분 읽기

TheDailyUtils의 Base64 인코더 및 디코더
브라우저에서 바로 Base64를 인코딩하고 디코딩하세요.

Base64란 무엇인가요?

Base64는 바이너리 데이터를 64개의 출력 가능한 ASCII 문자만을 사용해 표현하는 바이너리-텍스트 인코딩 방식입니다. 사용하는 문자는 A–Z, a–z, 0–9, 그리고 기호 +/이며, 패딩에는 =가 사용됩니다. 목적은 이메일 프로토콜, URL, JSON 페이로드, HTML 속성 등 텍스트 처리를 위해 설계된 시스템을 통해 바이너리 데이터를 안전하게 전송하는 것입니다.

중요한 점은 Base64가 암호화가 아니라는 것입니다. 보안을 전혀 제공하지 않습니다. Base64로 인코딩된 데이터를 보는 사람은 누구든 즉시 디코딩할 수 있습니다. 이 방식의 목적은 안전한 전송을 위한 인코딩이지, 데이터를 숨기는 것이 아닙니다.

Base64 인코딩 작동 원리

알고리즘은 입력의 매 3바이트(24비트)를 가져다 네 개의 6비트 그룹으로 분할합니다. 각 6비트 그룹은 Base64 알파벳의 64개 문자 중 하나에 매핑됩니다. 입력 3바이트가 출력 4문자가 되므로, Base64 인코딩은 데이터 크기를 약 33% 늘립니다.

입력 길이가 3으로 나누어지지 않으면, 총 길이가 4의 배수가 되도록 패딩 문자(= 또는 ==)가 출력에 추가됩니다. 이를 통해 디코더가 원본 데이터의 길이를 정확히 파악할 수 있습니다.

일반적인 사용 사례

웹 개발에서의 데이터 URI: 이미지, 폰트, 기타 바이너리 파일을 Base64로 인코딩하여 HTML이나 CSS에 직접 삽입할 수 있습니다. 예를 들어 작은 아이콘을 <img src="data:image/png;base64,iVBORw0K..."> 형태로 삽입하면 HTTP 요청을 줄일 수 있습니다. 작은 에셋에는 유용하지만 크기 오버헤드로 인해 큰 파일에는 적합하지 않습니다.

이메일 첨부 파일: MIME 표준은 Base64를 사용하여 바이너리 첨부 파일(이미지, PDF 등)을 ASCII 텍스트 처리를 위해 구축된 SMTP 서버를 통해 전송할 수 있는 텍스트로 인코딩합니다. 파일을 이메일에 첨부할 때마다 내부적으로 Base64가 사용됩니다.

JSON이나 XML에 바이너리 데이터 저장: 이러한 포맷은 텍스트 기반으로 임의의 바이너리 데이터를 기본적으로 표현할 수 없습니다. API가 JSON 응답의 일부로 파일, 이미지, 또는 암호화 자료를 전송해야 할 때 Base64 인코딩이 표준 해결책입니다.

HTTP Basic 인증: HTTP Basic Auth 방식은 Authorization 헤더에 자격증명을 Base64로 인코딩합니다. Authorization: Basic dXNlcjpwYXNz 이 역시 암호화가 아닙니다. 반드시 HTTPS 위에서만 사용해야 합니다.

암호화 키 및 인증서: TLS 인증서와 SSH 키에 널리 사용되는 PEM 형식은 바이너리 DER 인코딩 데이터를 -----BEGIN CERTIFICATE----------END CERTIFICATE----- 헤더 사이에 Base64로 감싸서 표현합니다.

URL 안전 Base64

표준 Base64는 URL에서 특별한 의미를 갖는 +/를 사용합니다. URL 안전 Base64는 +-로, /_로 대체하여 인코딩된 문자열을 퍼센트 인코딩 없이 URL에 포함할 수 있게 합니다. JWT(JSON Web Token)와 OAuth 흐름에서 이 변형 방식을 만나게 됩니다.

Base64 디코딩

디코딩은 과정을 정확히 역으로 수행합니다. 4개의 Base64 문자 그룹이 3바이트의 바이너리 데이터로 다시 매핑됩니다. 대부분의 프로그래밍 언어에는 Base64 지원이 내장되어 있습니다.

  • JavaScript: 인코딩에 btoa(str), 디코딩에 atob(str) (브라우저); Node.js에서는 Buffer.from(str, 'base64')
  • Python: import base64; base64.b64encode(data)base64.b64decode(data)
  • 커맨드 라인: echo -n "hello" | base64echo "aGVsbG8=" | base64 --decode

Base64를 사용하지 말아야 할 때

실제 보안이 필요한 경우 Base64는 적합하지 않습니다. 대신 제대로 된 암호화를 사용하세요. 또한 오버헤드가 발생하므로 직접 바이너리 스트림을 사용할 수 있는 대용량 바이너리 전송에는 사용하지 마세요. 바이너리 컬럼 타입(BLOB, BYTEA)을 지원하는 데이터베이스에 데이터를 저장할 때는 Base64 인코딩 텍스트보다 원시 바이너리로 저장하는 것이 더 효율적입니다.

Base64를 이해하면 API 문서를 읽고, 네트워크 트래픽을 디버깅하고, 인증서, 토큰, 미디어를 자신 있게 다룰 수 있습니다. 모든 웹 개발자에게 필수적인 기본 지식입니다.

브라우저에서 바로 Base64 인코딩/디코딩하기

무료 Base64 인코더 & 디코더 열기 — 텍스트나 바이너리 데이터를 즉시 변환하세요. 브라우저에서 완전히 실행되며 서버로 아무것도 전송되지 않습니다.

base64encodingdeveloperbinaryweb