🔐 Base64 인코딩이란? 언제 어떻게 쓰나

이메일 첨부·데이터 URI에 쓰이는 이유

설정 파일이나 API 응답에서 알파벳과 숫자, +, /, =로만 이루어진 이상한 문자열을 본 적 있다면 그건 십중팔구 Base64입니다. 이 글에서는 Base64가 정확히 무엇을 하는 인코딩인지, 왜 쓰이는지, 그리고 왜 보안 수단이 될 수 없는지 설명합니다.

Base64가 하는 일 — 바이너리를 텍스트로

Base64는 임의의 바이너리 데이터를 이메일, JSON, URL처럼 텍스트만 안전하게 다루는 환경에서도 깨지지 않고 전달할 수 있도록 아스키(ASCII) 텍스트로 바꾸는 인코딩입니다. 이름 그대로 64개의 문자(A-Z, a-z, 0-9, +, /)만 사용해 데이터를 표현합니다. 원리는 단순합니다. 원본 데이터를 3바이트(24비트)씩 묶고, 이를 6비트씩 4등분해서 각 6비트 값(0~63)을 64개 문자표에서 하나씩 골라 4개의 문자로 바꿉니다. 그래서 "3바이트가 4글자가 된다"는 규칙이 성립하며, 결과적으로 인코딩된 데이터는 원본보다 약 33% 커집니다. 마지막 묶음이 3바이트를 채우지 못하면 남는 자리를 = 문자로 채워 길이를 맞춥니다.

실제 인코딩 예시

텍스트 Man은 정확히 3바이트(M=77, a=97, n=110)이므로 그대로 4글자 TWFu로 인코딩됩니다. 반면 Hello는 5바이트라 3바이트씩 딱 나누어떨어지지 않는데, 인코딩 결과는 SGVsbG8=입니다. 마지막에 붙은 = 하나가 바로 부족한 바이트를 채우기 위한 패딩입니다. 반대로 디코딩은 이 과정을 그대로 거꾸로 밟아 4글자를 다시 3바이트로 되돌리는 것뿐입니다.

왜 쓰이나 — 텍스트만 통과하는 통로들

Base64가 널리 쓰이는 이유는 인터넷 인프라 중 상당수가 원래 텍스트 전용으로 설계되었기 때문입니다.

Base64는 암호화가 아니다

가장 중요하게 기억해야 할 점입니다. Base64는 데이터를 "표현하는 방식"만 바꿀 뿐, 어떤 키도 비밀도 필요로 하지 않습니다. 인코딩된 문자열만 있으면 누구나, 도구나 브라우저 콘솔의 한 줄 코드만으로 즉시 원본을 복원할 수 있습니다. 따라서 Base64로 감쌌다고 해서 비밀번호나 API 키, 개인정보가 "숨겨졌다"고 착각해서는 안 됩니다. 실제로 값을 비공개로 유지해야 한다면 AES 같은 암호화, 혹은 애초에 값을 전송·저장하지 않는 설계가 필요합니다. Base64는 어디까지나 바이너리를 텍스트 통로에 안전하게 통과시키기 위한 인코딩일 뿐입니다.

Base64 문자열을 직접 인코딩하거나, 알 수 없는 Base64 값이 실제로 무엇을 담고 있는지 바로 디코딩해보고 싶다면 아래 도구로 확인해보세요.

Base64 문자표 (64개 인덱스)

Base64는 6비트(0~63) 값을 아래 64개 문자에 매핑합니다. 3바이트(24비트)를 4개 문자로 인코딩합니다.

인덱스문자
0 – 25A – Z
26 – 51a – z
52 – 610 – 9
62+
63/

표준 Base64 vs Base64URL

구분표준 Base64Base64URL
62번 문자+-
63번 문자/_
패딩= 사용보통 생략
주 용도MIME·이메일 첨부·데이터 URIURL·파일명·JWT

+·/·=는 URL에서 특수문자로 취급되므로, URL이나 JWT에서는 -·_로 바꾸고 패딩을 생략한 Base64URL을 씁니다.

🔐 이 작업, 도구로 바로 해보세요

Base64 인코딩이란? 언제 어떻게 쓰나 — 이메일 첨부·데이터 URI에 쓰이는 이유

다른 가이드

🔁
도메인 IP 주소 확인하는 방법
도메인이 가리키는 실제 서버 IP를 찾는 법
🛰️
DNS 전파 확인하는 방법 (TTL이란?)
네임서버 변경 후 전파 여부와 TTL 개념 정리
📡
내 IP 주소 확인하는 가장 쉬운 방법
공인 IP·사설 IP 차이와 확인 방법
📐
CIDR 표기법과 서브넷 마스크 계산법
/24 같은 CIDR 표기를 서브넷 마스크로 바꾸는 법
🩺
SSL 인증서 만료일 확인하는 방법
브라우저 없이 인증서 만료일을 확인하는 법
🪪
JWT 토큰 구조 이해하고 디코딩하는 방법
Header·Payload·Signature 3부분 구조 설명
🗝️
Apache Basic 인증(.htpasswd) 파일 만드는 법
APR1-MD5 해시로 .htpasswd 생성하는 법
🔑
안전한 비밀번호 만드는 기준과 생성 방법
길이·문자 조합·엔트로피로 보는 비밀번호 강도
📘
JSON Formatter로 API 응답 가독성 높이기
압축된 JSON을 보기 좋게 정리하는 법
🗓️
유닉스 타임스탬프 변환하는 방법
1970년 기준 초 단위 시간을 날짜로 바꾸는 법
🗃️
지저분한 SQL 쿼리 포맷팅하는 방법
한 줄 SQL을 절 단위로 정렬하는 법
🎨
HEX RGB HSL 색상 코드 변환하는 방법
세 가지 색상 표기법의 차이와 변환법
🔠
카멜케이스 스네이크케이스 등 표기법 정리
camelCase·snake_case·PascalCase 언제 쓰나
🆚
두 텍스트 파일 차이 비교하는 방법
코드·문서 버전 간 차이를 빠르게 찾는 법