🔐 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 언제 쓰나
🆚
두 텍스트 파일 차이 비교하는 방법
코드·문서 버전 간 차이를 빠르게 찾는 법
🔤
Punycode란? 한글 도메인이 xn--으로 보이는 이유
국제화 도메인(IDN)을 ASCII로 안전하게 표현하는 인코딩 방식.
🔀
IPv4를 IPv6로 매핑하는 법
시스템 로그의 ::ffff:192.168.1.1 같은 표기, 정체와 계산법.
🕸️
텍스트에서 도메인만 뽑아내는 법
로그·이메일처럼 뒤섞인 텍스트에서 도메인만 정확히 골라내기.
🚪
URL 여러 개를 한 번에 여는 법
매일 확인하는 사이트 목록, 하나씩 클릭하지 말고 한 번에.
📮
이메일 주소 유효성 확인하는 법
형식 검사와 MX 레코드로 알 수 있는 것, 알 수 없는 것.
📋
HTTP 응답 헤더 확인하는 법
캐시 정책, 서버 정보, 압축 여부까지 헤더 하나로.
🛡️
보안 헤더 점검하는 법
HSTS·CSP·X-Frame-Options — 없으면 생기는 위험까지.
📇
Whois/RDAP로 도메인 등록 정보 조회하는 법
누가, 언제 등록했고 언제 만료되는지 확인하는 법.
📍
IP 주소로 대략적인 위치 확인하는 법
동작 원리와 정확도 한계, VPN 때문에 틀리는 이유까지.
🖼️
OGP 메타태그 확인하는 법
카톡·SNS 공유 카드가 이상하게 뜰 때 확인할 것.
📑
제목 태그(h1~h6) 구조 확인하는 법
SEO·접근성의 기본, 제목 계층 구조 점검하기.
🏷️
TITLE·META 태그 확인하는 법
검색결과에 어떻게 노출되는지 결정하는 핵심 태그들.
#️⃣
해시 함수란? MD5·SHA-256 차이
어떤 해시를 언제 써야 하는지, 되돌릴 수 없다는 게 무슨 뜻인지.
📱
QR코드 동작 원리
일부가 가려져도 인식되는 이유와 QR 피싱 주의사항.
🔍
SSL 인증서 항목 읽는 법
CN·SAN·발급기관·유효기간, 각각 뭘 의미하나.
📜
CSR이란?
SSL 인증서를 발급받으려면 왜 CSR부터 만들어야 하나.
♻️
PEM vs DER 인증서 포맷
왜 같은 인증서를 형식만 바꿔서 다시 써야 할 때가 있나.
🤝
인증서·개인키가 안 맞을 때
짝이 맞는지 확인하는 원리와 흔한 불일치 원인.
🪄
자체서명 SSL 인증서 쓰는 법
테스트·개발 환경에서만 쓰고 프로덕션엔 절대 쓰면 안 되는 이유.
🔑
HTTP Basic vs Bearer 인증
Authorization 헤더 값이 어떻게 만들어지는지, 언제 뭘 써야 하는지.
🎫
안전한 랜덤 토큰 만드는 기준
API 키·세션 시크릿, 얼마나 길어야 하고 어떤 형식이 맞나.
🔒
Jasypt로 설정값 암호화하기
application.properties의 ENC(...) 값, 어떻게 동작하나.
🧩
JSON 문자열 이스케이프란?
따옴표·줄바꿈이 든 텍스트를 JSON에 안전하게 넣는 법.
JS·CSS 포맷팅과 압축의 차이
코드 정리할 땐 포맷팅, 배포할 땐 압축 — 왜 반대인가.
✂️
코드 압축의 안전 범위
공백·주석 제거는 안전, 변수명 변경은 왜 위험할 수 있나.
🧽
HTML 들여쓰기가 중요한 이유
구조가 보여야 실수도 보인다.
🧹
XML 들여쓰기 정리가 필요한 상황
한 줄 XML에서 엘리먼트 중첩 구조 파악하기.
🔣
HTML 엔티티란?
<, >, & 문자를 화면에 그대로 보여주고 싶을 때.
📊
엑셀 표를 HTML TABLE로 바꾸는 법
복사-붙여넣기만으로 표 데이터를 HTML로.
⛓️
HTML에서 링크 한 번에 뽑는 법
href·src 속성값을 전부 골라내는 법.
🐘
PHP·MySQL 구문 검사기의 한계
괄호·따옴표 짝 검사로 알 수 있는 것, 알 수 없는 것.
🗄️
MySQL 쿼리 짝 검사가 유용할 때
긴 서브쿼리, 동적으로 조립한 쿼리에서 실수 찾기.
🔍
HTML5 검증에서 자주 걸리는 실수
태그 짝·중복 id·alt 누락, 각각 왜 문제인가.
✍️
비주얼 HTML 에디터, 언제 쓰나
위지윅 편집이 유리한 경우, 코드 직접 작성이 유리한 경우.
📝
Markdown 미리보기가 필요한 이유
코드로만 보면 놓치는 렌더링 결과.
🔗
URL 퍼센트 인코딩이란?
한글·공백이 %EC%95%88 같은 형태로 바뀌는 이유.
✏️
정규식으로 찾아 바꾸기
단순 검색으로 안 되는 패턴 치환, 정규식으로.
↕️
목록 정렬, 알아야 할 정렬 기준
가나다순과 숫자순은 왜 다르게 동작하나.
📧
텍스트에서 이메일만 뽑는 법
정규식 패턴과 흔히 발생하는 오탐 실수.
🔢
글자 수와 바이트 수, 왜 다른가
한글 한 글자가 3바이트인 이유.
🔤
전각·반각 문자란?
숫자처럼 보이는데 검색이 안 되는 이유.
🈚
유니코드 코드포인트란?
모든 문자가 가진 고유 번호, U+XXXX 표기 읽는 법.
🔟
텍스트를 숫자로 바꾸는 원리
10진수·16진수·2진수, 어떻게 같은 값을 다르게 표현하나.
🧾
UTF-8 바이트 인코딩 기초
왜 영어는 1바이트, 한글은 3바이트인가.
0️⃣
텍스트가 0과 1로 저장되는 원리
비트란 무엇이고 텍스트는 어떻게 비트가 되나.
🔡
아스키 아트는 어떻게 만들어지나
문자만으로 큰 글자 배너를 그리는 원리.