Base64

KangHo Lee's avatar
Dec 06, 2024
Base64
  • Base64는 바이너리 데이터를 텍스트 형식으로 인코딩하는 방법 중 하나입니다.
  • 바이너리 데이터(Byte 배열)를 텍스트 기반 시스템(예: 이메일, URL, JSON)에서 안전하게 전송할 수 있도록 도와줍니다.
  • Base64 인코딩은 데이터를 6비트 블록으로 나누어 각각을 64개의 ASCII 문자로 변환하는 방식으로 작동합니다.

Base64 인코딩의 원리

  1. 바이너리 데이터를 6비트 블록으로 나누기
      • 바이너리 데이터는 8비트(1바이트) 단위로 되어 있습니다.
      • Base64 인코딩은 이 데이터를 6비트 단위로 나눕니다.
      • 예를 들어, 3바이트(24비트) 데이터는 4개의 6비트 블록으로 나뉩니다.
  1. 각 6비트 블록을 Base64 문자로 변환
      • 6비트 블록은 0부터 63까지의 값을 가질 수 있습니다.
      • 이러한 값은 Base64 인코딩 테이블을 참조하여 64개의 ASCII 문자로 변환됩니다.
      • Base64 문자 집합은 'A-Z', 'a-z', '0-9', '+', '/'로 구성됩니다.
  1. 패딩 처리
      • 인코딩할 데이터의 길이가 6비트의 배수가 아닐 경우, '=' 문자를 사용하여 길이를 맞춥니다.
      • 예를 들어, 인코딩할 데이터가 2바이트(16비트)일 경우, 2개의 '=' 패딩 문자가 추가됩니다.

Base64 인코딩 예시

예를 들어, 문자열 "Man"을 Base64로 인코딩하는 과정을 살펴보겠습니다.
  1. 바이너리 데이터로 변환
      • "Man"의 ASCII 코드는 다음과 같습니다:
        • M: 77
        • a: 97
        • n: 110
      • 이를 바이너리로 변환하면
      01001101 01100001 01101110
  1. 6비트 블록으로 나누기
      • 위의 바이너리 데이터를 6비트 블록으로 나눕니다
      010011 010110 000101 101110
  1. Base64 문자로 변환
      • 6비트 블록을 Base64 문자로 변환하면
      010011 -> T 010110 -> W 000101 -> F 101110 -> u
      • 따라서 "Man"을 Base64로 인코딩한 결과는 "TWFu"가 됩니다.

Base64의 사용 사례

  1. 이메일 첨부 파일
      • 바이너리 데이터를 이메일로 전송할 때 Base64 인코딩을 사용하여 텍스트 형식으로 변환합니다.
  1. 데이터 URI (이미지 전송)
      • 웹 페이지에서 이미지를 포함할 때 Base64 인코딩을 사용하여 이미지 데이터를 텍스트 형식으로 변환합니다.
  1. JWT(Json Web Token)
      • JSON 데이터를 안전하게 전송하기 위해 Base64 인코딩을 사용합니다.

주의 사항

  • 용량 증가
    • Base64 인코딩은 데이터 크기를 약 33% 증가시킵니다. 이는 인코딩 과정에서 데이터가 6비트에서 8비트로 확장되기 때문입니다.
💡
동영상 파일은 base64로 보내지 않습니다.
multipart/form-data나 스트리밍 프로토콜을 활용합니다.
  • 보안
    • Base64는 데이터의 안전한 전송을 위한 인코딩 방식일 뿐, 데이터를 암호화하지 않습니다. 즉, 인코딩된 데이터를 복호화하는 것은 상대적으로 쉽습니다.
 
Share article

devleekangho