API 문서를 읽다 보면 SGVsbG8gV29ybGQ= 같은 의미 불명의 문자열이 나온다. 암호처럼 보이지만 이건 암호화가 아니라 Base64 인코딩이다. 디코딩하면 "Hello World"가 된다.
Base64는 왜 쓸까
Base64는 바이너리 데이터를 텍스트로 바꾸는 인코딩 방식이다. 이메일 프로토콜이나 JSON처럼 텍스트만 전송할 수 있는 환경에서 이미지나 파일을 보내야 할 때 사용한다. A-Z, a-z, 0-9, +, / 총 64개 문자만 사용하기 때문에 어떤 시스템에서든 깨지지 않고 전달된다.
어디에 쓰이나
- 이메일 첨부파일 — MIME 규격에서 파일을 Base64로 인코딩해서 전송한다
- HTML/CSS에 이미지 삽입 —
data:image/png;base64,...형태로 이미지를 코드에 직접 넣을 수 있다 - JWT 토큰 — 헤더와 페이로드가 Base64URL로 인코딩되어 있다
- API 인증 — Basic Auth에서 아이디:비밀번호를 Base64로 인코딩해서 보낸다
주의 Base64는 인코딩이지 암호화가 아니다. 누구나 디코딩할 수 있으므로 비밀번호나 민감한 데이터를 Base64로만 보호하면 안 된다.
텍스트 Base64 변환 방법
Base64 변환 도구의 텍스트 탭에서 원문을 입력하면 인코딩 결과가 바로 나온다. 반대로 Base64 문자열을 넣고 디코딩하면 원래 텍스트가 복원된다. JWT 토큰의 페이로드를 확인할 때도 이 방법을 쓰면 된다.
이미지를 Data URL로 변환하기
이미지 탭에서 파일을 드래그해서 올리면 해당 이미지가 Base64 Data URL로 변환된다. 이 문자열을 HTML의 <img src="...">에 넣으면 별도 이미지 파일 없이 페이지에 표시할 수 있다. 아이콘이나 작은 이미지에 유용한데, 파일 크기가 크면 HTML 자체가 무거워지니까 수 KB 이하 이미지에만 쓰는 게 좋다.
Base64의 단점
원본보다 약 33% 크기가 증가한다. 3바이트를 4글자로 표현하기 때문이다. 그래서 대용량 파일을 Base64로 전송하는 건 비효율적이고, 작은 데이터나 인라인 삽입이 필요한 경우에 주로 쓴다.
Base64는 개발하면서 자주 마주치는데, 개념을 한 번 이해해두면 JWT 디버깅이나 API 연동에서 시간을 아낄 수 있다.