유틸리티

Base64 인코딩이란? 이미지 변환부터 JWT 디코딩까지

API 응답 데이터에 알파벳과 숫자, 슬래시, 플러스가 뒤섞인 긴 문자열이 들어 있다. 암호화된 건 아니고 Base64로 인코딩된 상태다. 디코딩하면 원래 텍스트나 바이너리 데이터가 나온다.

Base64는 왜 쓸까

Base64는 바이너리 데이터를 텍스트(ASCII)로 바꾸는 인코딩 방식이다. 이메일, JSON, XML 같은 텍스트 기반 프로토콜에서 이미지나 파일을 전송해야 할 때 쓴다. 바이너리를 그대로 넣으면 깨지거나 잘리는 문제를 Base64가 해결해준다.

어디에 쓰이나

이미지 Data URL
작은 아이콘이나 로고를 HTML/CSS에 직접 삽입할 때 쓴다. data:image/png;base64,... 형태로 넣으면 별도 이미지 파일 요청 없이 렌더링된다.
이메일 첨부파일
SMTP 프로토콜은 텍스트 기반이라, 첨부 파일을 Base64로 인코딩해서 본문에 포함한다.
JWT 토큰
JSON Web Token의 header와 payload 부분이 Base64URL로 인코딩되어 있다. 디코딩하면 토큰에 담긴 사용자 정보와 만료 시간을 확인할 수 있다.
API 인증
HTTP Basic Auth에서 username:password를 Base64로 인코딩해 헤더에 담는다.
주의: Base64는 인코딩이지 암호화가 아니다. 누구나 디코딩할 수 있으므로 민감한 데이터를 Base64만으로 보호하면 안 된다.

변환 방법

JavaScript에서는 btoa()로 인코딩, atob()로 디코딩한다. 하지만 한글이 포함되면 추가 처리가 필요하고, 이미지 파일을 변환하려면 FileReader API를 써야 해서 번거롭다. Base64 변환 도구에 텍스트를 붙여넣거나 이미지를 드래그하면 인코딩/디코딩 결과가 바로 나온다. JWT 토큰을 넣으면 header, payload, signature를 분리해서 보여주기 때문에 디버깅할 때 편하다.

Base64 인코딩된 데이터는 원본보다 약 33% 크기가 늘어난다. 큰 파일에는 비효율적이지만, 작은 이미지나 설정 데이터를 텍스트로 주고받아야 할 때는 여전히 가장 간편한 방법이다.