유틸리티

Base64 인코딩이란? 이미지 변환부터 JWT까지 활용법

이메일 첨부파일을 열어본 적이 있다면, 그 뒤에서 Base64가 일하고 있었다. 이미지를 HTML에 직접 넣거나, API 인증 토큰을 전달하거나, JWT를 해석할 때도 Base64가 등장한다. 이름만 들으면 어려워 보이지만 원리는 단순하다.

Base64는 인코딩이지 암호화가 아니다

Base64는 바이너리 데이터를 텍스트 문자로 바꾸는 인코딩 방식이다. 64개의 문자(A-Z, a-z, 0-9, +, /)로만 구성된 문자열로 변환하기 때문에 Base64라고 부른다.

핵심은, 누구나 디코딩해서 원본을 복원할 수 있다는 것이다. 비밀번호처럼 감추려는 목적이 아니라, 텍스트만 전송할 수 있는 환경에서 바이너리 데이터를 실어 보내기 위한 수단이다.

예시
"안녕하세요" → Base64 인코딩 → 7JWI64WV7ZWY7IS47JqU
누구든 디코딩하면 원문이 나온다. 보안 기능은 전혀 없다.

어디에 쓰이나

이메일 첨부파일

이메일 프로토콜(SMTP)은 원래 텍스트만 전송할 수 있도록 설계됐다. 이미지나 PDF를 첨부하면 내부적으로 Base64로 변환해서 텍스트 형태로 보내고, 수신 측에서 다시 파일로 복원한다.

이미지 Data URL

HTML이나 CSS에 이미지를 직접 삽입할 수 있다. <img src="data:image/png;base64,iVBOR..."> 형태로 넣으면 별도 이미지 파일 없이 한 파일 안에서 해결된다. 아이콘이나 작은 이미지에 유용하다.

API 인증 (Basic Auth)

HTTP Basic Authentication에서 사용자명과 비밀번호를 username:password 형태로 합친 뒤 Base64로 인코딩해서 헤더에 실어 보낸다.

JWT 토큰

JWT(JSON Web Token)는 세 부분(header.payload.signature)으로 나뉘는데, header와 payload는 Base64URL로 인코딩되어 있다. 디코딩하면 토큰에 담긴 사용자 정보나 만료 시간을 확인할 수 있다.

Base64의 단점

  • 크기 증가: 원본 대비 약 33% 커진다. 3바이트 데이터가 4개 문자로 변환되기 때문이다.
  • 보안 없음: 디코딩이 자유롭기 때문에 민감한 데이터를 Base64로만 처리하면 위험하다.
  • 대용량 비적합: 큰 이미지를 Data URL로 넣으면 HTML 파일 크기가 급격히 커져 오히려 성능이 떨어진다.

변환 방법

코드로 처리할 수도 있지만, 빠르게 확인만 하고 싶을 때는 Base64 변환기가 편하다. 텍스트를 붙여넣으면 인코딩·디코딩이 실시간으로 처리되고, 이미지 파일을 끌어다 놓으면 Data URL이 바로 생성된다. JWT 토큰을 디코딩해서 payload 내용을 확인하는 용도로도 쓸 수 있다. 파일이 서버로 전송되지 않으니 인증 토큰 같은 민감한 데이터도 안심하고 넣을 수 있다.

Base64를 한 번 이해해두면 이메일, 웹, API, 인증 등 여러 영역에서 "이 문자열이 왜 이렇게 생겼지?"라는 의문이 풀린다.