1 분 소요

✔ Base 64 인코딩

  • 프로젝트 진행중 Base64 인코딩 관련 내용이 존재하여 간략히 정리

✔ 인코딩?

파일에 저장된 정보의 형태형식을 데이터 표준화, 보안, 처리속도 향상,
저장 공간 절약 등을 위해서 다른 형태로 변환하는 처리 혹은 그 처리 방식.


이메일 등의 전송 동영상이나 이미지 영역에서 가장 많이 사용되며,
반대말을 디코딩이다.

✔ Base 64 인코딩

  • Binary DataText로 변환하는 Encoding 방법 중 하나
  • Binary Data를 Character set에 영향 받지 않고 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 Encoding 방식
  • 남는 공간이 있을경우 padding을 통해 빈 공간을 0으로 채워준다.

Base64 변환표

24bit의 buffer를 생성하여 위쪽(MSB)부터 바이트 데이털르 넣은 뒤,
버퍼의 위쪽부터 6bit 단위로 잘라 Base64 테이블의 ASCII 문자로 변환.


원본 문자열 > ASCII binary > 6bit cutting > base64 encoding

Base64 예제

  • 위 표는 ASCII 코드 표입니다.

  • Man이라는 세 글자 단어를 Base64로 인코딩 한다면
  • Man > 77 97 110 > 01100001 01101110 > TWFu 순으로 변환

Base64 테스트

Base64 사용 이유

😇 Base64를 사용하는 이유가 무엇인지 간략히 알아보자

Base64를 사용하는 경우

  • Base64로 인코딩을 하게되면 6bit당 2bit의 Overhead가 발생
  • 전송해야 될 데이터의 크기가 약 33% 정도 증가

왜 사용을 해야할까?

  • 통신 과정에서 Binary Data의 손실을 막기 위해 사용이 된다
  • 플랫폼 독립적으로 Binary Data를 전송할 필요가 있는경우 ASCII로 Encoding하여 전송하게 되면 문제가 생길 수 있다

대표적인 문제점

  • ASCII7bits Encoding인데 나머지 1bit를 처리하는 방식이 시스템별로 상이하다
  • 일부 제어 문자 (e.g. Line ending)의 경우 시스템 별로 다른 코드값을 가짐
  • 즉, ASCII는 시스템 간 데이터를 전달하기에 꼭 안전하지만은 않다.

정리

Base64는 HTML 또는 Email과 같은 문자를 위한 Media에 Binary Data를
포함해야 될 필요가 있을 때, Binary Data가 시스템 독립적으로 동일하게 전송 또는 저장되는걸 보장하기 위해 사용한다.

참고 자료

댓글남기기