피드로 돌아가기
Dev.toBackend
원문 읽기
Binary 데이터를 Text 채널로 전송하는 Base64 인코딩 메커니즘과 33% 오버헤드 분석
Base64 explained — what it is, when to use it, and the gotchas that bite developers
AI 요약
Context
SMTP, JSON, XML 등 Text 기반 프로토콜 및 포맷에서 Binary 데이터를 직접 전송할 때 발생하는 데이터 깨짐 현상을 해결해야 함. 8비트 Binary 데이터를 7비트 ASCII 환경에서 안전하게 운반하기 위한 표준 인코딩 체계가 필요함.
Technical Solution
- 3바이트(24비트)의 데이터를 6비트씩 4개 그룹으로 나누어 64개 지정 문자로 매핑하는 변환 구조 설계
- 입력 데이터가 3바이트 배수가 아닐 때 발생하는 빈 공간을 '=' 문자로 채우는 Padding 메커니즘 적용
- URL 및 파일 시스템 경로 내 특수문자(+ , /) 충돌 방지를 위해 '-', '_'로 치환한 Base64URL 변형 표준 채택
- JSON 페이로드 내 파일 임베딩 및 JWT의 Header/Payload 섹션 구성에 인코딩 로직 활용
- 전송 채널의 특성에 따라 Padding 제거 및 화이트스페이스 스트립핑을 통한 데이터 정규화 수행
Impact
- Binary 데이터의 Text 변환에 따른 데이터 크기 약 33% 증가 발생
Key Takeaway
인코딩은 데이터 전송을 위한 투명한 변환 과정이며 보안을 위한 암호화(Encryption)와 완전히 분리하여 설계해야 함.
실천 포인트
1. 데이터 크기가 큰 파일 전송 시 Base64 대신 Multipart Upload 검토
2. URL 파라미터나 토큰 설계 시 Standard Base64가 아닌 Base64URL 사용
3. JWT 등 Padding이 제거된 데이터를 디코딩할 때 라이브러리 요구사항에 맞춰 '=' 패딩 복구 로직 확인
4. Base64 처리 전 UTF-8 등 명시적 문자 인코딩 설정 확인