
Base64는 바이너리 데이터를 64개의 출력 가능한 ASCII 문자만을 사용해 표현하는 바이너리-텍스트 인코딩 방식입니다. 사용하는 문자는 A–Z, a–z, 0–9, 그리고 기호 +와 /이며, 패딩에는 =가 사용됩니다. 목적은 이메일 프로토콜, URL, JSON 페이로드, HTML 속성 등 텍스트 처리를 위해 설계된 시스템을 통해 바이너리 데이터를 안전하게 전송하는 것입니다.
중요한 점은 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로 감싸서 표현합니다.
표준 Base64는 URL에서 특별한 의미를 갖는 +와 /를 사용합니다. URL 안전 Base64는 +를 -로, /를 _로 대체하여 인코딩된 문자열을 퍼센트 인코딩 없이 URL에 포함할 수 있게 합니다. JWT(JSON Web Token)와 OAuth 흐름에서 이 변형 방식을 만나게 됩니다.
디코딩은 과정을 정확히 역으로 수행합니다. 4개의 Base64 문자 그룹이 3바이트의 바이너리 데이터로 다시 매핑됩니다. 대부분의 프로그래밍 언어에는 Base64 지원이 내장되어 있습니다.
btoa(str), 디코딩에 atob(str) (브라우저); Node.js에서는 Buffer.from(str, 'base64')import base64; base64.b64encode(data)와 base64.b64decode(data)echo -n "hello" | base64와 echo "aGVsbG8=" | base64 --decode실제 보안이 필요한 경우 Base64는 적합하지 않습니다. 대신 제대로 된 암호화를 사용하세요. 또한 오버헤드가 발생하므로 직접 바이너리 스트림을 사용할 수 있는 대용량 바이너리 전송에는 사용하지 마세요. 바이너리 컬럼 타입(BLOB, BYTEA)을 지원하는 데이터베이스에 데이터를 저장할 때는 Base64 인코딩 텍스트보다 원시 바이너리로 저장하는 것이 더 효율적입니다.
Base64를 이해하면 API 문서를 읽고, 네트워크 트래픽을 디버깅하고, 인증서, 토큰, 미디어를 자신 있게 다룰 수 있습니다. 모든 웹 개발자에게 필수적인 기본 지식입니다.
무료 Base64 인코더 & 디코더 열기 — 텍스트나 바이너리 데이터를 즉시 변환하세요. 브라우저에서 완전히 실행되며 서버로 아무것도 전송되지 않습니다.