API 문서를 보다 보면 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 같은 긴 문자열이 등장한다. 알파벳과 숫자, +, /로만 구성된 이 문자열은 Base64로 인코딩된 데이터다. 원래 내용을 디코딩하면 사람이 읽을 수 있는 JSON이나 텍스트가 나온다.
Base64란
Base64는 바이너리 데이터를 64개의 ASCII 문자(A-Z, a-z, 0-9, +, /)로 표현하는 인코딩 방식이다. 원래 이메일 시스템에서 첨부 파일을 텍스트로 전송하기 위해 만들어졌는데, 지금은 웹 개발 전반에서 쓰인다.
핵심 포인트 Base64는 암호화가 아니다. 누구나 디코딩할 수 있다. 보안이 아니라 데이터 형식 변환이 목적이다.
어디에 쓰나
- API 인증 — HTTP Basic Auth에서 아이디:비밀번호를 Base64로 인코딩해서 헤더에 넣는다
- JWT 토큰 — JSON Web Token의 헤더와 페이로드가 Base64URL로 인코딩되어 있다
- 이미지 임베딩 — 작은 아이콘을 Base64로 변환해서 HTML/CSS에 직접 삽입하면 HTTP 요청을 줄일 수 있다
- 이메일 첨부 — MIME 표준에서 첨부 파일을 Base64로 인코딩해 전송한다
텍스트 Base64 변환
Base64 변환기의 텍스트 탭에 원본을 입력하고 인코딩 버튼을 누르면 Base64 문자열이 나온다. 반대로 Base64 문자열을 넣고 디코딩하면 원래 텍스트가 복원된다.
| 원본 | Base64 인코딩 결과 |
|---|---|
| hello | aGVsbG8= |
| {"name":"test"} | eyJuYW1lIjoidGVzdCJ9 |
| 안녕하세요 | 7JWI64WV7ZWY7IS47JqU |
끝에 붙는 =는 패딩 문자다. Base64는 3바이트 단위로 변환하는데, 입력 길이가 3의 배수가 아니면 빈 자리를 =로 채운다.
이미지를 Base64로 변환하기
이미지 탭에 파일을 드래그해서 놓으면 Data URL 형식의 Base64 문자열이 생성된다. 이걸 HTML의 <img> 태그 src에 넣으면 별도 이미지 파일 없이 페이지에 이미지가 표시된다.
<img src="data:image/png;base64,iVBORw0KGgo..." />
다만 Base64로 변환하면 원본보다 파일 크기가 약 33% 커진다. 수백 KB 이상의 큰 이미지는 별도 파일로 제공하는 게 낫고, 수 KB 이하의 작은 아이콘이나 로고에 적합하다.
Base64와 Base64URL의 차이
표준 Base64는 +와 /를 쓰는데, 이 문자는 URL에서 특별한 의미를 가진다. Base64URL은 +를 -로, /를 _로 바꿔서 URL에 안전하게 넣을 수 있게 한 변형이다. JWT 토큰이 Base64URL을 쓴다.
Base64 인코딩은 웹 개발에서 빈번하게 마주치는 형식이다. 원리를 한 번 이해해두면 API 디버깅이나 토큰 분석에서 막히는 일이 줄어든다.