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% 크기가 늘어난다. 큰 파일에는 비효율적이지만, 작은 이미지나 설정 데이터를 텍스트로 주고받아야 할 때는 여전히 가장 간편한 방법이다.