이메일 첨부파일이 코드 안에 들어있는 걸 본 적이 있을 것이다. 알파벳과 숫자, 그리고 +, / 기호로 이루어진 긴 문자열이 바로 Base64다. 바이너리 데이터를 텍스트로 바꿔서 전송하기 위한 인코딩 방식이다.
Base64는 왜 필요한가
이메일, JSON, XML처럼 텍스트만 다루는 시스템에서는 이미지나 파일을 직접 넣을 수 없다. 바이너리 데이터를 텍스트 형태로 변환해야 하는데, 그 방법 중 하나가 Base64다. 64가지 문자(A-Z, a-z, 0-9, +, /)로 모든 데이터를 표현한다.
참고 Base64로 인코딩하면 원본보다 크기가 약 33% 증가한다. 3바이트를 4글자로 변환하기 때문이다. 암호화가 아니라 단순 변환이므로 보안 목적으로는 쓸 수 없다.
어디에 쓰이나
| 용도 | 설명 |
|---|---|
| 이미지 인라인 삽입 | HTML/CSS에 이미지를 Data URL로 직접 넣을 때 |
| 이메일 첨부 | MIME 형식으로 파일을 텍스트에 포함할 때 |
| API 데이터 전송 | JSON에 바이너리 데이터를 포함할 때 |
| JWT 토큰 | 헤더와 페이로드가 Base64URL로 인코딩됨 |
| 설정 파일 | 인증서, 키 파일을 텍스트로 저장할 때 |
텍스트 변환
"Hello"를 Base64로 인코딩하면 SGVsbG8=가 된다. 반대로 SGVsbG8=를 디코딩하면 "Hello"가 복원된다. Base64 변환 도구에 텍스트를 넣고 인코딩 버튼을 누르면 바로 결과가 나온다. 입력과 출력의 바이트 수, 증가율도 함께 표시된다.
이미지 변환 (Data URL)
작은 아이콘이나 로고를 HTML에 직접 삽입하고 싶을 때 Data URL을 쓴다. 이미지를 Base64로 변환하면 이런 형태가 된다.
data:image/png;base64,iVBORw0KGgoAAAANSUhE...
이걸 <img src="...">에 넣으면 별도 이미지 파일 없이 HTML만으로 이미지가 표시된다. 다만 이미지가 크면 HTML 파일 자체가 무거워지니까 작은 아이콘(수 KB 이하)에만 적합하다.
- 지원 포맷: PNG, JPG, GIF, SVG, WebP
- 드래그 앤 드롭으로 이미지 업로드 가능
- 변환된 Data URL을 복사해서 코드에 바로 사용
Base64는 암호화가 아니라 인코딩이다. 누구나 디코딩할 수 있으니 민감한 데이터를 Base64로 '숨겼다'고 생각하면 안 된다. 전송 형식을 맞추기 위한 도구일 뿐이다.