Base64인코딩 이란?

이후띵·2022년 3월 17일
2

프론트_지식백과

목록 보기
1/8
  1. Base64 ?
    • 64진법, 데이터를 64진법으로 표현하는 방식.
  2. 인코딩이란?
    • 정보의 형태나 형식을 여러가지 목적에 따라 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식을 뜻하는 개념이다.
    • cf) 여러가지 목적에는 저장공간, 데이터 표준화, 보안, 퍼포먼스 등이 있다.
  3. BASE64 인코딩이란?
    • 바이너리 데이터를 아스키 문자열로 표현하는 인코딩 방식의 하나이다.
    • HTML, Email과 같이 문자로 이루어진 미디어에 Binary 데이터가 사용 될 때, 포함된 Binary 데이터가 시스템 간 동일하도록 보장하기 위해 사용한다
💡 데이터를 BASE64로 변환하는 것을 인코딩한다고 표현하고, 그 반대를 디코딩한다고 표현한다.

Base64 문자

영문 대문자(A~Z) 26개 + 영문 소문자(a~z) 26개 + 숫자(0~9) 10개 = 62개 값 + 2개(+, /)까지 합친

64개 문자를 갖는다.

2^6 = 64이므로,

6bit 로 문자 한 개를 표현한다.

(*bit가 6개면 64개의 문자 표시가 가능하다.)

또한, 6bit 를 4개씩 모아 변환하는데,

이 때문에 비는 공간이 발생한다. (a.k.a padding)

이 경우에는 빈공간을 “=” 문자로 채운다.


Base64 인코딩 원리

  • 컴퓨터 언어에서 기본적인 문자단위가 대부분 1byte(8bits)로 이루어져 있는 반면, Base64에서는 6bit를 사용한다.
  • 따라서 Base64 인코딩에서는 8bit와 6bit의 최소공배수인 24bit씩 묶어서 처리한다.
  • 즉, 일반적인 3개의 문자를 base64에서는 4개의 문자로 해석한다는 의미가 된다.

예시로 알아보는 Base64

example 1 : COW → Y293

문자→ 아스키 → 8비트

C : 99 → 01100011

O : 111 → 01101111

W : 119 → 01110111

따라서, COW는 01100011 01101111 01110111 로 표현할 수 있다.

Base64로 바꾸면, 우선 6bit씩 묶어줘야한다.

→ 01100011 01101111 01110111 (8bit)

→ 011000 110110 111101 110111 (6bit)

→ 24 54 61 55 (10진수)

→ Y 2 9 3 (Base64 변환표)

결과) COW → Y293


왜 필요할까?

Base64 인코딩을 한 결과,

  • 6비트당 2비트의 overhead가 발생했다.
    • COW → Y293
    • 33.3333333% 정도 늘어난다.
  • 인코딩, 디코딩, 추가 CPU 연산 수행을 했다.

그럼에도 사용하는 이유는,

Base64는 ASCII 중 확실하게 화면에 표시할 수 있는 문자만을 다루기 때문에 시스템 간 전달에 안전하기 때문이다.

  • ASCII는 7bit 인코딩으로 나머지 1bit를 처리하는 방식이 시스템 별로 상이하다.
  • 일부 제어 문자의 경우 시스템 별로 다른 코드 값을 가진다.

따라서 모든 시스템에서 동일한 공통 ASCII로만 이루어진 Base64 인코딩을 사용하는 것이다.

예를 들어, HTML, Email과 같이 문자로 이루어진 미디어에 Binary 데이터가 사용될 때 포함된 Binary 데이터가 시스템 간 동일하도록 보장하기 위해 사용한다.


profile
이후띵's 개발일지

0개의 댓글