SpringBoot

SpringBoot Base64

개발자노트 조현진 2025. 8. 8. 14:24

1. Base64란?

Base64는 바이너리 데이터(이미지, 파일 등)를 텍스트로 변환하는 인코딩 방식입니다. 64개의 ASCII 문자(A-Z, a-z, 0-9, +, /)와 패딩 문자(=)를 사용해 안전하게 전송할 수 있게 합니다.

2. 왜 사용하나요?

  • 텍스트만 허용하는 시스템(예: JSON, 이메일, HTTP)에서 바이너리 데이터를 보낼 때.
  • 데이터 손상 방지: 특수 문자가 바이너리에 섞이지 않음.
  • 예: 플러터 앱에서 파일을 Base64로 변환해 서버로 업로드.

3. 어떻게 작동하나요?

  1. 바이너리 데이터를 8비트 바이트로 봅니다.
  2. 6비트 단위로 나눕니다 (3바이트 = 24비트 = 4개의 6비트).
  3. 각 6비트를 0-63 숫자로 변환 후, Base64 테이블에서 문자로 매핑.
  4. 나머지 비트가 부족하면 =로 패딩.

도식화 (간단 예: "Man" 문자열)

  • 원본: M a n (ASCII: 77, 97, 110 → 바이너리: 01001101 01100001 01101110)
  • 6비트 나누기: 010011 010110 000101 101110
  • 10진수: 19, 22, 5, 46
  • Base64 매핑: T W F u
  • 결과: TWFu

 

Base64 역직렬화(디코딩)는 Base64 문자열을 원본 바이너리로 복원합니다.

  1. Base64 문자열을 4문자(24비트) 단위로 나눕니다.
  2. 각 문자를 6비트(0-63)로 매핑 후 결합해 8비트 바이트로 재구성.
  3. 패딩(=) 무시.

도식화 ("TWFu" 디코딩 예):

  • Base64: T W F u (인덱스: 19, 22, 5, 46 → 6비트: 010011 010110 000101 101110)
  • 8비트 재구성: 01001101 01100001 01101110 (ASCII: 77, 97, 110 → "Man")

'SpringBoot' 카테고리의 다른 글

SSE(Server-Sent Events) 채팅 시스템  (4) 2025.09.02
폴링 채팅 시스템  (1) 2025.09.02
Swagger란?  (1) 2025.07.21
JWT란?  (0) 2025.07.21
이미지 업로드 기능  (0) 2025.07.21