피드로 돌아가기
Base64 Encode Decode Explained: Developer Guide with Real Use Cases
Dev.toDev.to
Backend

Base64 Encode Decode Explained: Developer Guide with Real Use Cases

개발자 가이드가 Base64의 인코딩 메커니즘과 64개 문자 알파벳, 33% 데이터 블로트, 그리고 JWT·이메일 첨부 등 실제 적용 사례를 명확히 정의

楊東霖2026년 3월 25일10beginner

Context

Base64는 개발자 도구킷에서 자주 사용되지만 암호화로 오인되거나 보안을 제공하지 않는다는 점이 자주 간과된다. 특히 데이터 크기 증가(33% 오버헤드)와 부적절한 사용 사례 선택으로 인한 성능 저하가 발생한다.

Technical Solution

  • Base64 인코딩 동작 원리: 입력 3바이트(24비트)를 4개의 Base64 문자(각 6비트)로 변환하고 패딩은 = 문자로 처리
  • 패딩 규칙 구현: 입력 길이가 3의 배수가 아닐 경우 1개 또는 2개의 = 패딩 문자 추가 (예: "Ma" → "TWE=", "M" → "TQ==")
  • Base64URL 변형 적용: 표준 Base64의 + 와 / 를 - 와 _ 로 치환하여 URL과 JWT 토큰에 사용
  • 언어별 구현 제공: JavaScript (btoa/atob, Buffer.toString('base64'), Buffer.from(str, 'base64url')), Python (base64.b64encode/b64decode, base64.urlsafe_b64encode/b64decode)
  • 실제 사용 사례 분류: 데이터 URI (이미지 인라인 삽입), HTTP Basic 인증 (Authorization 헤더), JWT 토큰 (헤더·페이로드·서명), 이메일 첨부, 환경 변수 (바이너리 시크릿 저장)

Key Takeaway

Base64는 암호화가 아닌 텍스트 인코딩 방식이므로 보안을 목적으로 사용하면 안 되며, 텍스트 채널 전송이 필수인 경우에만 선택적으로 사용해야 한다. 10MB 이상 대용량 파일은 multipart/form-data 업로드로 대체하고, 바이너리 전송이 이미 지원되는 REST API에는 불필요하다.


API 개발 팀에서 JWT 기반 인증을 구현할 때 표준 Base64 대신 Base64URL 변형(Buffer.toString('base64url') 또는 base64.urlsafe_b64encode)을 사용하면 URL 특수문자(+ /) 이스케이핑 처리를 제거할 수 있으며, 데이터 URI로 이미지를 삽입할 때는 파일 크기 33% 증가를 감수하고 소형 아이콘과 로딩 스피너만 대상으로 제한해야 성능 저하를 피할 수 있다.

원문 읽기