Base64란?
Base64 인코딩이란?
Base64는 바이너리 데이터를 텍스트로 변환하는 인코딩 방식입니다. 8비트 바이너리 데이터를 6비트씩 나누어 64개의 ASCII 문자로 표현하는 방식으로, 주로 이메일 첨부파일, 웹 API, 데이터베이스 저장 등에서 사용됩니다.
Base64 문자셋
Base64는 다음 64개의 문자를 사용합니다:
- 대문자 A-Z (26개)
- 소문자 a-z (26개)
- 숫자 0-9 (10개)
- 특수문자 +, / (2개)
URL-safe Base64
URL에서 사용할 때는 +와 / 문자가 특수문자로 해석될 수 있어 문제가 될 수 있습니다. 이를 해결하기 위해 URL-safe Base64에서는:
- + 문자를 - 문자로 대체
- / 문자를 _ 문자로 대체
- = 패딩 문자는 그대로 유지
사용 예시
원본 텍스트: "Hello, World!"
Base64 인코딩: "SGVsbG8sIFdvcmxkIQ=="
URL-safe Base64: "SGVsbG8sIFdvcmxkIQ"
언제 사용하나요?
- 이메일 첨부파일 전송
- 웹 API에서 바이너리 데이터 전송
- JSON에서 바이너리 데이터 포함
- 데이터베이스에 바이너리 데이터 저장
- 웹 토큰(JWT) 인코딩
- 이미지나 파일을 텍스트로 변환
장단점
장점
- 텍스트 기반 시스템에서 바이너리 데이터 전송 가능
- 인코딩/디코딩이 간단함
- 대부분의 프로그래밍 언어에서 기본 지원
- 데이터 무결성 보장
단점
- 원본 데이터보다 약 33% 크기 증가
- 암호화가 아닌 단순 인코딩
- 대용량 데이터에는 비효율적
- 패딩 문자로 인한 오버헤드
💡 팁: Base64 Hub를 사용하면 실시간으로 텍스트를 Base64로 변환하거나 Base64 문자열을 원본 텍스트로 디코딩할 수 있습니다. 다양한 문자 인코딩(UTF-8, EUC-KR)과 URL-safe 옵션을 지원하여 더욱 편리하게 사용할 수 있습니다.
Base64의 역사와 배경
Base64는 1980년대 이메일 시스템(MIME)에서 바이너리 파일을 안전하게 전송하기 위해 고안되었습니다. 이후 웹, 데이터베이스, 인증(JWT) 등 다양한 분야에서 표준으로 자리잡았습니다.
보안 이슈와 주의사항
- Base64는 암호화가 아니므로 민감한 정보 보호에는 적합하지 않습니다.
- 누구나 쉽게 디코딩할 수 있으므로 개인정보, 비밀번호 등은 반드시 암호화 후 사용하세요.
- 대용량 파일을 Base64로 변환하면 데이터 크기가 커져 성능 저하가 발생할 수 있습니다.
활용 팁
- 이미지, 파일을 HTML/CSS에 직접 삽입할 때 data URI로 활용할 수 있습니다.
- API 통신 시 바이너리 데이터를 안전하게 전송할 수 있습니다.
- JWT, OAuth 등 인증 토큰에서 Base64가 널리 사용됩니다.
추가 FAQ
- Q. Base64는 어디서 표준화되었나요?
A. IETF RFC 4648에서 표준으로 정의되어 있습니다. - Q. Base64로 인코딩된 데이터는 어떻게 디코딩하나요?
A. 대부분의 프로그래밍 언어에서 내장 함수로 지원합니다. 예: atob/btoa(JavaScript), base64 모듈(Python) 등 - Q. Base64와 비슷한 인코딩 방식이 있나요?
A. Base32, Base58, Base91 등 다양한 변형이 존재합니다.