Base64 인코딩이란 무엇이며 언제 사용해야 하나요
API, 이메일 시스템, 웹 개발을 다룬다면 알아채지 못했더라도 Base64를 만난 적이 있을 것입니다. 알 수 없는 글자처럼 보이는 그 긴 영문자와 숫자 문자열? 아마도 Base64일 것입니다.
Base64가 하는 일
Base64는 이진 데이터(어떤 바이트 시퀀스든)를 "안전한" 64개 문자(A-Z, a-z, 0-9, +, /)만 사용하는 텍스트 문자열로 변환합니다. 결과는 필요한 경우 항상 = 패딩으로 끝납니다.
예시:
- 텍스트:
Hello World - Base64:
SGVsbG8gV29ybGQ=
이 인코딩이 존재하는 이유는 많은 시스템(이메일, JSON, URL, XML)이 텍스트만 처리하기 때문입니다. 이진 데이터 — 이미지, 압축 파일, 원시 바이트 — 에는 이런 시스템을 망가뜨릴 수 있는 문자가 포함될 수 있습니다. Base64는 이진 데이터를 어떤 텍스트 채널이라도 손상 없이 통과하는 텍스트로 변환합니다.
일반적인 사용처
HTML/CSS에 이미지 임베드:
<img src="data:image/png;base64,iVBORw0KGgoAAAA..." />
작은 아이콘과 로고를 HTML에 직접 임베드하여 추가 HTTP 요청을 없앨 수 있습니다.
API 페이로드: API가 JSON을 기대하지만 이진 데이터(파일 업로드, 서명 이미지)를 포함해야 할 때, Base64로 인코딩하면 일반 텍스트 필드처럼 포함할 수 있습니다.
이메일 첨부: 이메일 프로토콜(SMTP)은 텍스트 기반입니다. 모든 첨부 파일은 텍스트로 전송되도록 뒤에서 Base64로 인코딩됩니다.
인증 헤더: HTTP 기본 인증은 사용자:비밀번호를 Base64로 인코딩하여 Authorization 헤더에 넣습니다. (이는 인코딩이지 암호화가 아닙니다 — 그 자체로는 어떤 보안도 제공하지 않습니다.)
인코딩과 디코딩 방법
- 인코딩 또는 디코딩을 선택하세요 — 변환 방향을 선택하세요.
- 텍스트를 붙여 넣거나 파일을 가져오세요 — 텍스트를 직접 입력하거나 파일을 드래그 앤 드롭하세요(최대 5MB).
- 결과를 복사하세요 — 출력이 즉시 업데이트됩니다. 클립보드로 복사하세요.
Base64를 사용해야 할 때
사용해야 할 때:
- 작은 이미지(5KB 미만)를 HTML이나 CSS에 직접 임베드해야 할 때
- API가 이진 데이터를 텍스트 문자열 형태로 요구할 때
- 텍스트만 지원하는 시스템을 통해 이진 데이터를 전달해야 할 때
사용하지 말아야 할 때:
- 파일이 클 때 — Base64는 33%의 오버헤드를 더하고 캐싱을 막습니다
- 보안이 필요할 때 — Base64는 암호화가 아닙니다
- 파일을 정상적으로 제공할 수 있을 때 — 일반적인
<img src="photo.jpg">는 몇 KB를 넘는 모든 것에 대해 Base64 데이터 URL보다 효율적입니다
요령
- 작은 파일에만 사용하세요 — 33% 증가는 무시할 수 없습니다. 100KB 이미지는 Base64로 133KB가 되며 브라우저가 별도로 캐싱할 수 없습니다.
- 인코딩과 암호화를 혼동하지 마세요 — Base64는 누구나 완전히 되돌릴 수 있습니다. 어떤 보안도 제공하지 않습니다. 데이터를 보호할 때가 아니라 전달할 때 사용하세요.
- 줄바꿈에 주의하세요 — 일부 Base64 구현은 76자마다 줄바꿈을 추가합니다(MIME 표준에 따라). Base64를 JSON이나 URL에 붙여 넣을 때는 한 줄에 들어가는지 확인하세요.
자주 묻는 질문
Base64가 내 데이터를 암호화하나요?
아니요. Base64는 인코딩이지 암호화가 아닙니다. 누구나 Base64 문자열을 디코딩할 수 있습니다 — 어떤 보안도 제공하지 않습니다. 데이터를 보호하려면 실제 암호화(AES, RSA 등)를 사용하세요.
왜 Base64는 파일을 더 무겁게 만드나요?
Base64 인코딩은 데이터 크기를 약 33% 증가시킵니다. 3바이트의 이진 데이터가 4개의 Base64 문자가 됩니다. 이 오버헤드는 이진 데이터를 텍스트로 안전하게 전송할 수 있게 하는 비용입니다.
텍스트뿐 아니라 파일도 인코딩할 수 있나요?
네. 모든 파일(이미지, PDF, 오디오)은 Base64로 인코딩할 수 있습니다. 작은 이미지를 데이터 URL 형태로 HTML이나 CSS에 직접 임베드할 때 흔히 사용됩니다.
Base64를 사용하지 말아야 할 때는 언제인가요?
큰 파일에는 사용하지 마세요. 1MB 이미지는 Base64 텍스트로 1.33MB가 되며, 브라우저가 별도로 캐싱할 수 없습니다. 몇 KB를 넘는 것이라면 파일을 정상적으로 제공하는 것이 더 효율적입니다.