221212 Base64 인코딩

Jongleee·2022년 12월 12일
0

TIL

목록 보기
127/737

Base64 인코딩

Binary Data를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 인코딩

인코딩, Encoding
정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식

Base64는 문자 그대로 64진법

64진법인 이유

64는 2의 제곱수 64=2^6이며 64개로 제어문자를 제외한 ASCII 문자를 표시할 수 있기 때문

변경하는 방식

  1. 문자열 -> ASCII -> Binary Data
    ASCII 문자는 8비트 (= 1 byte) 로 구성된 Binary Data (01010101와 같은 형태)
  2. 6비트=64=2^6씩 잘라 위의 색인에서 찾아 치환
  3. 글자수가 6비트로 잘리지 않는 경우 padding을 더해줌 (=)
    3의 배수인 경우 83=24=64로 6비트로 나뉘지만 아닌 경우에는 패딩이 더해지게 됨

위의 변경 방식에서 알 수 있듯 3글자를 4글자로 바꾸기 때문에 약 33% 사이즈가 증가하며 인코딩 디코딩 과정이 추가된다.

사용하는 이유

  • ASCII는 시스템간 데이터를 전달하기에 안전하지가 않음
    1. ASCII는 7 bits Encoding인데 나머지 1bit를 처리하는 방식이 시스템 별로 다를 수 있음
    2. 일부 제어문자 (e.g. Line ending)의 경우 시스템 별로 다른 코드값을 가질 수 있음
  • Base64는 ASCII 중 제어문자와 일부 특수문자를 제외한 64개의 안전한 출력 문자(문자 코드에 영향을 받지 않는 공통 ASCII)만 사용하여 위 문제에서 자유로울 수 있음

0개의 댓글