유틸리티

Base64 인코딩이란? 텍스트와 이미지 변환 방법 정리

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 인코딩 결과
helloaGVsbG8=
{"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 디버깅이나 토큰 분석에서 막히는 일이 줄어든다.